マクロ
表紙
図
公開情報
古い情報
|
LaTeXマクロLaTeX では,簡単なプログラム(マクロ)の実行が可能です.これを上手に使うと,文書の作成が簡単になるととともに,ミスプリントを少なくすることができます.ここでは,マクロの作成方法と使い方を説明します. 目次マクロを理解するためにマクロをどこに書くか?LaTeX ファイルのどこでも,マクロは定義可能です.定義された場所以降で,そのマクロは有効になります.通常は本文の直前のプリアンブル領域の後半に,マクロを記述します. トークンここでは,マクロを理解するために,基本的な事項を説明します.最初は読み飛ばして,とりあえずマクロを使ってみるのが良いでしょう.マクロになれたところで,基本的なことを理解することを勧めます. トークン(token)TeX がファイルからテキストを読むとき,トークンのリストに分解します.トークンはカテゴリーコードが取り付けられたシングルキャラクターあるいは命令です.例えば,「\sqrt{23} \pi hoge」の場合,10個のトークン (\sqrt, {1, 212, 312, }2, \pi, h11, o11, g11, e11) があります.下付の整数がカテゴリーコードです.トークンに関しては,(1)複数の空白は一つの空白文字となる,(2)命令の後の空白文字は無視される,(3)コメントは無視されるというような注意が必要です.普通の単語の後の一つあるいは複数の空白は一つの空白文字のトークンになります. カテゴリーコード(category code)LaTeXは文字をカテゴリーコードで分類します. コマンドマクロ定義 (\def)ユーザー定義のコマンド(マクロ)作成する場合,TeX で定義されている「\def」と LaTeX でで定義されている「\newcommand」を使うことができます.これらは,普通のプログラミング言語のサブルーチン(関数,メソッド)のような働きをします.既にあるマクロ名を使った場合の動作が,両者で異なります.\def の場合は後から定義されたマクロ命令が使われます.それに対して,\newcommand はエラーメッセージを表示します. \command は次節で示すとし,ここでは \def の使い方を説明します.\def の文法は以下のとおりです. \def<マクロ名><引数>{<処理>} 定義方法\def は引数を撮ります.0個から9個までの引数をとることができます.以下に,その例を示します.
引数の区切り引数を取る \def の場合,\hoge{引数1}{引数1}{引数1}のように記載します.引数の並びは,波括弧で区切ります.その他の方法もあります.以下に示すマクロの引数のとり方は,本格的なスタイルファイルを作成するときには必要なテクニックです.
コマンド作成 (\newcommand)\newcommand は LaTeX で定義されているコマンドで,新たにコマンドを定義します.TeX で定義されている \def とは異なり,既に同じマクロ名がある場合,\newcommand はエラーメッセージを表示します.単純なコマンドを定義する場合は,\newcommand の方が望ましいです.
\newcommand の書き方は,次の通りです. \newcommand{<マクロ名>}[<引数>]{<処理>">} 引数がない場合「\newcommand{\hoge}{ホゲホゲ}」とマクロを定義すると,本文で「\hoge」と書かれた部分は「ホゲホゲ」と出力されます. 引数がある場合「\newcommand{\hoge}[2]{#1 は #2 である}」とマクロを定義すると,本文で「\hoge{我輩}{猫}」と書かれた部分は「我輩は猫である」と出力されます. 制御構造条件分岐 (IF)一般的なプログラミング言語での「if(論理演算){処理} else if(条件){処理} else{処理}」と書きます.LaTeXの場合,この論理演算が無いため,構文がやや厄介です.論理演算子の代わりに,さまざまな if 文が使われます.LaTeX の条件分岐の構文は,「\ifコマンド 判断式・値など 処理A \else 処理 fi」となります.「\else 処理B」は省略可能です.
条件分岐を使った実用的なマクロプログラムとその実行結果を以下に示します.ここではネストした条件分岐を使い,else if のような構文とします.LaTeX の条件分岐はプリミティブな機能しかありませんが,組み合わせることで複雑なことも可能です. % -*- coding:utf-8 -*- \documentclass[10pt,a4paper]{jarticle} \usepackage[dvipdfmx]{graphicx} \pagestyle{empty} \usepackage{amsmath} \newcommand{\pdiff}[3]{% %%% マクロの定義 \ifnum #1<1% \text{エラーだよーん (最初の引数は1以上の整数)}% \else{% \ifnum #1=1% \frac{\partial #2}{\partial #3}% \else% \frac{\partial^{#1} #2}{\partial #3^{#1} }\fi% }\fi% } % --------- ドキュメント開始 --------------- \begin{document} 偏微分方程式を簡単に記述します. \begin{align} \kappa\pdiff{2}{f}{x}=\pdiff{1}{f}{t} \end{align} エラー処理の例を示します. \begin{align} \pdiff{3}{f}{x}=\pdiff{-1}{f}{t} \end{align} \end{document} 繰り返し (loop)LaTeX のマクロの繰り返し (loop) の構文は,「\loop \ifコマンド 判断式・値など 処理 \repeat」です.以下にに \loop を使った典型的なプログラム例を示します.5行目で,繰り返しの回数を数えるカウンターを作成します.カウンターについては,次節を参照ください.7行目で,繰り返し構文を呼び出すためのコマンド \LoopTest を定義します.8行目でカウンターをリセットします.9 — 13行目が繰り返し構文です. % -*- coding:utf-8 -*- \documentclass[10pt,a4paper]{jarticle} \usepackage[dvipdfmx]{graphicx} \pagestyle{empty} \newcounter{LCnt}% カウンター定義 \newcommand{\LoopTest}[2]{% コマンド定義 \setcounter{LCnt}{0}% 設定: LCnt = 0 \loop% ループ開始 \ifnum \value{LCnt}<#1% 条件 我が輩は#2である.% \stepcounter{LCnt}% LCnt++ \repeat% }% % --------- ドキュメント開始 --------------- \begin{document} \LoopTest{3}{猫}\par \LoopTest{2}{犬} \end{document} 変数
カウンター基本コマンドカウンターには,LaTeX とTeX のコマンドがあります.もちろん,LaTeXでは両方のコマンドを使うことができます.LaTeX の \newcounter でカウンター作成する場合,同名のカウンターのチェックが行われます.同じ名前のカウンターがあると処理が中断されます.一方,TeX の \newcount では後で定義されたものが使われるので,見つけにくいバグが入り込む可能性があります.このことからも,ユーザーは,LaTeX のカウンターを使用すべきです.また,機能も豊富です. 以下にカウンターに関するコマンドをまとめます.カウンター名を「Cntr」や「PCntr」としていますが,任意の名前で定義可能です.
カウンターを使った LaTeX マクロの例を以下に示します.6行目でカウンター MyCnt を作成します.007 — 010 行でカウンターを表示やカウントアップする命令 \MyCnt を定義します.カウンター名と命令が同じ名前ですが,問題なく動作します. % -*- coding:utf-8 -*- \documentclass[10pt,a4paper]{jarticle} \usepackage[dvipdfmx]{graphicx} \pagestyle{empty} \newcounter{mycnt}% カウンター定義 \newcommand{\outcnt}{% コマンド定義 \the\value{mycnt}% カウンター出力 \ifnum\value{mycnt}>100 (over 100)\fi% 100以上の場合 \stepcounter{mycnt}% mycnt++ } % --------- ドキュメント開始 --------------- \begin{document} \setcounter{mycnt}{0} カウンターの初期値: \outcnt\par カウンターの変化: \outcnt, \outcnt, \outcnt, \outcnt. \setcounter{mycnt}{98} カウンターの再設定値: \outcnt\par カウンター:\outcnt, \outcnt, \outcnt, \outcnt. \end{document} カウンター出力マクロの例スタイルファイルの作成スタイルファイルを自作する場合,最初は標準的に使われているものを真似るのが良いでしょう.プログラム作法を真似ることは大変重要です. ページ作成情報参考資料
更新履歴
|