<次頁><前頁><最下行><目次>  <ホーム>

6. 特殊文字

最近、特殊文字が何でも載っているファイル CompSymbInd.pdf を見つけました。


6.1 システム予約の文字等を出力したい。

キーボードに表示されている文字の中で、Latex の制御文字である

は、そのままでは文字通りに打ち出せません。

また、キーボードには | * < >  と表示されているのに、LaTeXのテキスト文では のように字体の変わる文字もあります。この理由は、LaTeX のテキスト文は、デフォルトでローマン体を使っていますが、キーボードの文字のフォントファミリーは、タイプライター体だからです。\texttt{・・・}の中に入れればこの状況は防げます(それでも*の出力は上にシフトしますが)。

さらに、日本語入力キーボードの"\"は英語入力では""と表されますので、しばしば"\"と入れたつもりでも、""と出力されてしまった経験をお持ちの方は多いでしょう (例えば"\verb|\yen|" と入れると "yen" と出力される)。

また\verb コマンドを使えば通常は正常に出力できる場合でも、他のコマンド (例えば文章の節や小節の見出しを出力するコマンド \section{ ・・・} や \subsection{・・・} ) の引数 の中では、\verb コマンド自体が使えません。このような場合に備えて、これら特殊文字をそのまま文字通りに打ち出す方法を下に掲げます。

<表1 \ を前に置いて出力できる特殊文字>

<表2 モードにより出力が異なる文字>

<表3 \verb コマンドが正しい出力を与えない文字>

<表4 特殊文字の出力方法>

*1) \texttt{ } で括らないと変形する場合がある。(例:\char`\> -->¿
*2) ams もしくは ascmac パッケージが必要。
*3) textcomp パッケージが必要。
*4) * は上にずれる。

★ 特殊文字を見出し文など他のコマンドの中に入れる例

例文: \section{ 特殊文字\$ \& \textbackslash を入れた見出し}

という tex 文を作ると と出力されます。

6.2 円記号の出力

"\" 文字は、TeXではエスケープ文字として使われています。通常の文字として打ち出す命令 \verb|\|を使うと、左下がりのスラッシュ (\キーの英文字出力) として出されてしまうので、"\" 記号そのものを打ち出したいときは工夫がいります(デモ例)。

1.全角の「¥」を使う。最も簡単です。

2.ascmac パッケージを使います。

\usepackage{ascmac} をプリアンブルに入れます。

ascmac は platex 標準で使えます。

 (参考: 中橋一朗:解決LaTeX2e 秀和システム、 p376)

3.ams パッケージを使う。 \yen で出力できるが、直立ローマン体のみ。

4.自前のマクロを作る。

a. \def\yen{Y\llap=}

b. \newcommand{\yen}{{\ooalign{Y\crcr\hss=\hss}}}

(奥村晴彦: LaTeX2e美文書作成入門、技術評論社、 p71)

c. \def\yen{{\setbox0=\hbox{Y}Y\kern-.85\wd0\vbox{%
\hrule height.1ex width.70\wd0\kern.25ex%
\hrule height.1ex width.70\wd0\kern.40ex}}}

ascmac の定義とほとんど同じです。少し数値を変えています。 ("TEXMF"\ptex\platex\base\tascmac.sty の中にある)

上記の場合に応じた出力

★ 4a の解説。"Y" を打ち、次の文字 "=" の右端を、前の文字の右端に揃えて打ち出します。簡単ですが、状況によりバランスが崩れ、pdf に変換すると形が変わります。

★ 4b の解説。"ooalign" は幅を考慮した重ね打ち命令、"\crcr" は重ね打ちの区切り、"\hss" (伸縮自在の空白)で"="を挟んで、中央に位置揃えをしています。=を使っているので横の2重線間隔がやや大きめに出ます。

★ 4c の解説: \setbox0=\hbox{Y} で使う文字"Y"をインデックス0"の箱の中に入れます。\wd0 命令はインデックス0の箱幅を出力する命令で、これにより"Y"文字幅の値を得るのが目的。

Y\kern-.84\wd0 で、"Y"を出力して、次の文字を"Y"字幅の84%だけ戻します。

\vbox{・・} 高さは中身を詰め合わせた最も自然な高さとなります。従って以下では水平線2本と空白2個をが入るのでそれを上下に積み重ねた高さの箱が出力されます。横幅は中身の箱の最大長となります。vbox のベースラインは、中身の最下端の箱のベースラインに一致します。 vbox の最後が \kern" で終わる場合は深さゼロ、 すなわち vbox の下端がベースラインとなります。

\hrule height.1ex width.70\wd0\kern.25ex は、線幅"0.1ex" (ex は文字"x" の高さ)で、横幅が"Y"文字幅の70%の水平線を引き、垂直方向に"0.25ex"幅の空白を入れます。

従って、この "\yen" コマンドは、線幅が "0.1ex" で横幅が"Y"という文字幅の70%ある2本線を、"Y" 文字の中央に、空隙 "0.25ex" で下端がベースラインから上 "0.40ex" の高さに配置する命令となります。

6.3 花文字を使いたい

ハミルトニアン、ラグランジアンなど花文字を使いたくなることがあります。

\mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ} と書けば、以下のように出力できます。

より本格的には、花文字を利用するマクロ \mathscr を用意するためスタイルファイル mathrsfs.sty と,フォントを利用するための FD ファイル ursfs.fd を用意します。インストールのためのファイルをここに置きました。

この二つのファイルを TEXMFMAIN/tex/latex/base/に入れます。(私の場合 TEXMFMAIN=D:\usr\local\share\texmf です。コマンドプロンプト窓で、  >set (+Enter) を実行すれば環境変数が表示されます。)

使いかた: プリアンブルで

\usepackage{mathrsfs}

と宣言し、式中で

\mathscr{ABCDEFGHIJKLMNOPQRSTUVWXYZ}

とすれば、このように出力されます。

フォントが無い場合(下のディレクトリーをチェックして見てください) ここから入手して、下のディレクトリーに入れればOKです。

*.mf はTEXMFMAIN/fonts/source/public/rsfs/に、

*.pfb はTEXMFMAIN/fonts/type1/public/rsfs/に、

*.tfm はTEXMFMAIN/fonts/tfm/public/rsfs/に。

花文字の 参考サイト 

6.4 ギリシャ語の太文字

ギリシャ語は数式モードで使うので、\mathbf{...} あるいは、{\bf ...} が使えそうですが、やってみると、大文字だけは太字になりますが、小文字は太文字になりません。"amsmath" package が入れてあれば、\boldsymbol{...} もしくは、\pmb{...} が使えます。また"bm" package が入れてあれば、\bm{...}が使えます。

\pmb (= poor man's bold )2度打ちすることによって、太字らしき物を実現しようとする試みで、いささか邪道ですし、見た目もあまりきれいではありませんが、窮余の一策として知っておいて損はないでしょう。以下に、打ち出しサンプルを表示します。

使用例

\usepackage{amsmath}
\usepackage{bm}

\begin{document}
\[ \boldsymbol{ \alpha \beta \gamma ......}\]
\[ \bm{\alpha \beta \gamma ......}\]
\end{document}

以下は太字かつイタリックです。

{\bf ...}\mathbf{ ...}と\mathit{ ...}は、後に来た方が優先して、太字かつイタリックとはなりません。

以下は太字かつイタリックにできる例ですが、順序が大切です。

6.5 ディラック行列のスラッシュ

物理に現れる特有な表現をしたいときに便利なマクロがあります。TeXsisは物理屋に便利な記号を表すマクロを集めたものですが、残念ながら日本語対応にはなっていません。ディラック行列のスラッシュだけを表現するマクロをここで見つけました。

使用法: 以下の文をプリアンブルに入れておきます。

% \slashchar puts a slash through a character to represent contraction

% with Dirac matrices. Use \not instead for negation of relations, and use

% \hbar for hbar.

\def\slashchar#1{\setbox0=\hbox{$#1$} % set a box for #1

\dimen0=\wd0 % and get its size

\setbox1=\hbox{/} \dimen1=\wd1 % get size of /

\ifdim\dimen0>\dimen1 % #1 is bigger

\rlap{\hbox to \dimen0{\hfil/\hfil}} % so center / in box

#1 % and print #1

\else % / is bigger

\rlap{\hbox to \dimen1{\hfil$#1$\hfil}} % so center #1

/ % and print /

\fi}

LaTexのテキスト文中に

\[\gamma^{\mu}\partial_{\mu} = \slashchar{\partial}, \qquad p_{\mu}\gamma^{\mu} = \slashchar{p} \]

と入れれば

のように出力されます。

もう一つの方法: 多分この方が簡単でしょう。次のようなコマンドをpreambleで定義します。\notでスラッシュ(/)を打ち、\!で間隔を\quad(10ポイント)の3/18戻してスラッシュを付けたい文字を重ね打ちする方法です。文字によっては\!\!と2倍戻した方がよい時もあります。

\def\slash#1{\not\!#1}

\def\slashb#1{\not\!\!#1}

\def\delsla{\not\!\partial}

本文中で

$ \slash{p},\quad \slashb{p},\quad \slash{\gamma}, \quad \slashb{\gamma},\quad \delsla,\quad \slashb{\partial} $

とすれば次のように出力されます。

<次頁><前頁><節頭><目次>  <ホーム>