ほげとTeXとそれから私

TeXとかなんとか

TeXでプログラミング

こんにちは.

今回はプログラミングをTeXで扱っていこうと思います.私が以前作成した,autocount.styでも使っていますが,TeXでもプログラムを組むことができます.詳しい説明は他のサイトでもありますが,このサイトではなるべく簡単に,例を交えて説明しようと思います.以下,必要な構文を紹介していきます.ちなみに,TeX版とLaTeX版がありますが,LaTeXTeX版を使うことは可能です.

 

・変数の作成

TeXで変数を作成して代入する際,2通りある.

[TeX版:\hogeという変数を作成して1を代入] \newcount\hoge \hoge=1

[LaTeX版:hogeという変数を1を代入して作成する] \setcounter{hoge}{1}

 

数値計算

変数に1を足す(引き算は「-」をつけて負の数にする).

[TeX版:\hogeに足す] \advance\hoge by 1

乗除は,\advanceの部分を,\multiply,\divideにそれぞれ変えるのみ.

[LaTeX版:hogeに足す]\addtocounter{hoge}{1}

と記述する.また,1を足すだけなら

\stepcounter{hoge}

でもよい.

 

グローバル変数

ローカル変数とグローバル変数が何者なのかは各自プログラミングの参考書等で調べてほしい.TeX版でグローバル変数にする際は,\globalをつける.

\global\hoge=1

\global\advance\hoge by 1

など.

 

・文字列化

[TeX版]

数値を文字列として扱う際は,\theを用いる.これを用いると,TeX版の変数とLaTeX版の変数を共存させることができる.以下が,TeX版の\hugaとLaTeX版のhogeを共存させた例である.

\addtocounter{hoge}{\the\huga}

[LaTeX版]

\value{hoge}とすることで文字列化できる.

\addtocounter{hoge}{\value{huga}}

 

・if文

TeXでは,if文が実装されているが,一般的なプログラミング言語と違い,ifひとつでなんでもできるわけではなく,用途によって数種類のものを使い分けなければいけない.例えば,ifnumは,数値の比較に使われるもので,

\ifnum <関係式> <合致したときの命令> \else <不一致時の命令>

で記述できる.ifの中にifを用いるときは以下に例を与えるが,注意点として,ifの終わりには終了を意味する\fiを記述する.

\ifnum \the\hoge=1 サンプル$1$\else{\ifnum \the\hoge=2 サンプル$2$}\elseサンプル$3$}\fi}\fi

この実行結果は,\hogeが1ならサンプル1,2ならサンプル2が,それ以外ならサンプル3が出力される(よくあるプログラミング言語と違って,比較演算子は==でなく,=).

詳しいifの種類に関しては,以下のページに詳しく記載されているため,そちらを参照してほしい.

TeX入門/マクロの作成 - TeX Wiki

 

・補足

新しい関数を定義するとき,\newcommandを使うが,何も記述がないときはあらかじめ指定しておいた値を勝手に代入してくれる機能がある.たとえば,

\newcommand{\hoge}[2][huga]{$#1 と #2$}

とすると,

\hoge[piyo]{piyopiyo} → piyoとpiyopiyo

\hoge{piyopiyo} → hugaとpiyopiyo

となる.この際,[ ]であることに注意.

 

以上,説明でした.私も一部しか知らないため,わかり次第更新していきます.

(2021/12/3更新)