まえがき もちろん、LaTeXは(TeX言語と違って)プログラム言語ではないので、条件分岐や繰り返し処理のような“実行制御”なんてアリエナイ、というタテマエがあることは皆さんご存知でしょう。とはいっても実際には「LaTeXにもif文があったらいいのにな……」と思った事があるLaTeXユーザはいるのではないでしょうか。 実は“標準LaTeX”にif文はあります。 LaTeXの開発元(LaTeX3 Project Team)による配布物の中には、「標準パッケージ(standard packages)」1と呼ばれる一連のパッケージ群があり、その中のifthenパッケージがまさに「LaTeXに実行制御の機能を追加する」ためのものなのです。つまり「LaTeXに実行制御はない」というタテマエなんて実は無かったのでした2。 本記事では、ifthenパッケージとその周辺についてのキホンについて解説します。
トークン列を別のトークン列に置き換える例えば、 \TeX というマクロは T\kern -.1667em\lower .5ex\hbox {E}\kern -.125emX\@ として定義されている。 コマンド:TeX 処理系や文書への命令。マクロ:別のトークン列に置き換わるコマンド。LaTeX や各種パッケージが提供するコマンドは全てマクロとして実装されている\newcommand も実際はマクロマクロでないコマンドはTeX処理系が直接処理するコマンドで、TeX primitive と呼ばれる。例:\def, \par, \displaystyle, \jobname, \left, \right使う側としては、特定のコマンドがマクロとして実装されているか TeX primitive なのかは意識する必要はない。 バックスラッシュ \ の後にアルファベットを並べる。数字や記号は使えない。
これで「新出語句の出力」という機能を、\myTermという命令(マークアップ)で表せたことになります。このようにマクロを作っておくと、後で「新出語句の出力」の書式が変えたい(例えば英訳のフォントサイズを小さくしたい、等)場合でも、この\myTermという命令の定義内容だけを変えれば済むことになります。 このように、マクロ作成は非常に便利で重要な機能ですが、残念ながら、LaTeX の初級者の間では「LaTeX のマクロは難しい」と思い込んでいる人が多いようにみえます。実のところ、現在入手可能な参考書の多くは「LaTeX のマクロ」を扱ってませんし、また解説のある参考書の多くでは、それが「TeX 言語の解説(特に TeX でのマクロ定義)」と同じ個所に載せられています。このため、「LaTeX のマクロ機能」が「TeX 言語の知識」と同じくらい難解な上級者向けの機能と思われがちなのかも知れません
これは「TeX & LaTeX Advent Caleandar 2014」の1日目の記事です。 (2日目は k16shikano さん です。) 昨年のアドベントカレンダーでは、「完全攻略! LaTeXのマクロ定義」と題して、「LaTeXのマクロ(ユーザ定義命令)」を作る命令(\newcommandなど)の使い方を紹介しました。そこで述べられているように、LaTeX標準での命令定義機能には割と大きな制約があります。 複数の引数をとる命令の場合、最初の1つしかオプション引数([...]で表される省略可能な引数)にできない。 ユーザ定義命令の引数が「段落をまたぐ」ことの可否を選べるが、全部の引数について一律に許可する(\newcommand)か、あるいは一律に禁止する(\newcommand*)かの選択しかなく、個別の引数ごとに選ぶことができない。 LaTeXの慣習では、ある命令の“変種”を
I have two macros FOO2 and FOO3: #define FOO2(x,y) ... #define FOO3(x,y,z) ... I want to define a new macro FOO as follows: #define FOO(x,y) FOO2(x,y) #define FOO(x,y,z) FOO3(x,y,z) But this doesn't work because macros do not overload on number of arguments. Without modifying FOO2 and FOO3, is there some way to define a macro FOO (using __VA_ARGS__ or otherwise) to get the same effect of dispatchi
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く