SlideShare a Scribd company logo
1 of 38
Download to read offline
TEX
マクロ プログラミング
2012.03.30
植原 昂
TeXで論文を書く時に、
マクロを使うと効率的です
しかし、
体系的にまとまった資料は
なかなか見つかりません
そこで、
使えそうなものに絞り
まとめてみました
この資料で伝える項目です
✓マクロ基礎
✓カウンタ
✓条件分岐
✓ループ
✓入出力
✓特殊マクロ
マクロを定義する
マクロ定義は簡単です
devmyname{ウエハラ}
私は myname です
=> 私は ウエハラ です
引数も使えます
devhour#1{#1時}
今は hour{5} です
=> 今は 5時 です
別の定義方法もあります
newcommand{myname}{ウエハラ}
newcommand{hour}[1]{#1時}
defとnewcommandの違い
- マクロを多重定義した場合の動作
- 引数のとり方
- 処理系
多重定義の違い
devlang{ruby}
devlang{python}
言語は lang です
=> 言語は python です
>> 上書きされる
newcommad{lang}{ruby}
newcommad{lang}{python}
>> コンパイルエラーとなる
def newcommand
引数の取り方
deftodo(#1,#2)#3{#1月#2日 #3}

todo(3,3){耳の日}
=> 3月3日 耳の日
def ではパターンマッチのイメージで

マクロを使用できる
処理系の違い
LaTeXTeX
def newcommand
newcommandはTeXの環境では使用できません
マクロを操作する
マクロをコピーします
defperson{ウエハラ}

letcloneperson



clone

=> ウエハラ
マクロを初期化します
defhoge{ほげ}

lethogerelax



hoge

=> 未定義エラー

relaxは初期化のために利用する空の定義です
カウンタを使う
カウンタを定義します
newcountnum
>> カウンタ num が作られます
値を代入・参照します
newcountnum

num=100

numbernum

=> 100
num=300

numbernum

=> 300
計算します
newcountnum

num=100
advancenum by3

numbernum

=> 103
advancenum by-5

numbernum

=> 98
条件分岐を使う
文字列と比較します
deftoday{休日}
iftoday{平日}

defwakeup{7時}

else

defwakeup{9時}

fi
wakeup

=> 9時
数値と比較します
newcountprice

price=380
ifnumprice>500

deflunchbox{普通の弁当}

else

deflunchbox{ワンコイン弁当} 

fi
lunchbox

=> ワンコイン弁当
2個のマクロを比較します
defmikeIsAt{東京}

defemilyIsAt{大阪}
ifx mikeIsAt emilyIsAt

会える!

else

すれ違い

fi
=> すれ違い
他にもたくさん
参考)http://www-sop.inria.fr/marelle/tralics/doc-i.html
ifundefined ifodd
ifdim
iftrue iffalse
ifcase ifinner ifdefined
ifhbox
ifvoid
ifvbox
ifcat
ifthenelse
ifmmode
スイッチを使います
newififrainy #スイッチrainyを作る
rainytrue #スイッチをtrueにする

ifrainy 部屋干し else 外干しfi

=>部屋干し
rainyfalse #スイッチをfalseにする

ifrainy 部屋干し else 外干し fi

=> 外干し
繰り返しを使う
ループを使います
newcountn #ループ変数を用意します

n=0
loopifnumn<3 advancen by1

test numbern, 

repeat

=> test1, test2, test3
色々組み合わせてみます
newcountn
defseq#1{n=0

loopifnumn<#1 advancen by1

numbern.

repeat}
seq{3}

=> 1.2.3.
seq{5}

=> 1.2.3.4.5.
✓ マクロ定義
✓ カウンタ操作
✓ 条件分岐
✓ ループ
入出力を使う
入力をマクロに代入します
read-1 totmp
tmp = (tmp)

=> tmp= (abc)
texコンパイル時に入力を求められます

試しに ”abc” と入力します
文字列を出力します
deftmp{テスト}

message{ABC tmp 012}
コンパイル時に “ABC テスト 012” と

表示されます
特殊文字を使う
マクロ名に数字を使います
makeatletter

@namedef{test1}#1{テスト1:#1}

makeatother
deftest1 はエラーとなります
数字を含むマクロを参照します
makeatletter

@nameuse{test1}{走り幅跳び}

makeatother
=> テスト1:走り幅跳び
test1 もエラーとなります
まとめ
マクロ定義 devname{名前}
newcommand{name}{名前}マクロ参照 name
コピー letdstsrc
初期化 lettemprelax
カウンタ定義 newcountnum
カウンタの参照 numbernum
加減算 advancenum by5
分岐
ifmacro{比較文字列} 真です else 偽です fi
ifnumcounter<10 真です else 偽です fi
ifxmacroAmacroB 真です else 偽です fi
スイッチ
newififcond
condtrue
condfalse
ifcond 真です else 偽です fi
ループ loopifnumn<3 advancen by1 ループn
repeat
入力 read-1 tohoge
出力 message{Hello World!}
特殊文字付きマクロ定義
makeatletter
@namedef{macro1}#1{MACRO1 #1}
makeatother
特殊文字付きマクロ参照
makeatletter
@nameuse{macro1}{ABC}
makeatother

More Related Content

What's hot

異常検知と変化検知で復習するPRML
異常検知と変化検知で復習するPRML異常検知と変化検知で復習するPRML
異常検知と変化検知で復習するPRMLKatsuya Ito
 
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1hirokazutanaka
 
[DL輪読会]Towards End-to-End Prosody Transfer for Expressive Speech Synthesis wi...
[DL輪読会]Towards End-to-End Prosody Transfer for Expressive Speech Synthesis wi...[DL輪読会]Towards End-to-End Prosody Transfer for Expressive Speech Synthesis wi...
[DL輪読会]Towards End-to-End Prosody Transfer for Expressive Speech Synthesis wi...Deep Learning JP
 
[DL輪読会]Revisiting Deep Learning Models for Tabular Data (NeurIPS 2021) 表形式デー...
[DL輪読会]Revisiting Deep Learning Models for Tabular Data  (NeurIPS 2021) 表形式デー...[DL輪読会]Revisiting Deep Learning Models for Tabular Data  (NeurIPS 2021) 表形式デー...
[DL輪読会]Revisiting Deep Learning Models for Tabular Data (NeurIPS 2021) 表形式デー...Deep Learning JP
 
情報統計力学のすすめ
情報統計力学のすすめ情報統計力学のすすめ
情報統計力学のすすめNaoki Hayashi
 
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミングNorishige Fukushima
 
道具としての機械学習:直感的概要とその実際
道具としての機械学習:直感的概要とその実際道具としての機械学習:直感的概要とその実際
道具としての機械学習:直感的概要とその実際Ichigaku Takigawa
 
深層学習の不確実性 - Uncertainty in Deep Neural Networks -
深層学習の不確実性 - Uncertainty in Deep Neural Networks -深層学習の不確実性 - Uncertainty in Deep Neural Networks -
深層学習の不確実性 - Uncertainty in Deep Neural Networks -tmtm otm
 
ベイジアンディープニューラルネット
ベイジアンディープニューラルネットベイジアンディープニューラルネット
ベイジアンディープニューラルネットYuta Kashino
 
Fisher Vectorによる画像認識
Fisher Vectorによる画像認識Fisher Vectorによる画像認識
Fisher Vectorによる画像認識Takao Yamanaka
 
PRML上巻勉強会 at 東京大学 資料 第1章前半
PRML上巻勉強会 at 東京大学 資料 第1章前半PRML上巻勉強会 at 東京大学 資料 第1章前半
PRML上巻勉強会 at 東京大学 資料 第1章前半Ohsawa Goodfellow
 
データに内在する構造をみるための埋め込み手法
データに内在する構造をみるための埋め込み手法データに内在する構造をみるための埋め込み手法
データに内在する構造をみるための埋め込み手法Tatsuya Shirakawa
 
[DL輪読会]Model-Based Reinforcement Learning via Meta-Policy Optimization
[DL輪読会]Model-Based Reinforcement Learning via Meta-Policy Optimization[DL輪読会]Model-Based Reinforcement Learning via Meta-Policy Optimization
[DL輪読会]Model-Based Reinforcement Learning via Meta-Policy OptimizationDeep Learning JP
 
変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)Takao Yamanaka
 
[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video Processing (NeRF...
[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video  Processing (NeRF...[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video  Processing (NeRF...
[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video Processing (NeRF...Deep Learning JP
 
計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-sleepy_yoshi
 
特徴選択のためのLasso解列挙
特徴選択のためのLasso解列挙特徴選択のためのLasso解列挙
特徴選択のためのLasso解列挙Satoshi Hara
 
Generating Diverse High-Fidelity Images with VQ-VAE-2
Generating Diverse High-Fidelity Images with VQ-VAE-2Generating Diverse High-Fidelity Images with VQ-VAE-2
Generating Diverse High-Fidelity Images with VQ-VAE-2harmonylab
 

What's hot (20)

異常検知と変化検知で復習するPRML
異常検知と変化検知で復習するPRML異常検知と変化検知で復習するPRML
異常検知と変化検知で復習するPRML
 
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
東京都市大学 データ解析入門 10 ニューラルネットワークと深層学習 1
 
[DL輪読会]Towards End-to-End Prosody Transfer for Expressive Speech Synthesis wi...
[DL輪読会]Towards End-to-End Prosody Transfer for Expressive Speech Synthesis wi...[DL輪読会]Towards End-to-End Prosody Transfer for Expressive Speech Synthesis wi...
[DL輪読会]Towards End-to-End Prosody Transfer for Expressive Speech Synthesis wi...
 
[DL輪読会]Revisiting Deep Learning Models for Tabular Data (NeurIPS 2021) 表形式デー...
[DL輪読会]Revisiting Deep Learning Models for Tabular Data  (NeurIPS 2021) 表形式デー...[DL輪読会]Revisiting Deep Learning Models for Tabular Data  (NeurIPS 2021) 表形式デー...
[DL輪読会]Revisiting Deep Learning Models for Tabular Data (NeurIPS 2021) 表形式デー...
 
情報統計力学のすすめ
情報統計力学のすすめ情報統計力学のすすめ
情報統計力学のすすめ
 
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング
 
道具としての機械学習:直感的概要とその実際
道具としての機械学習:直感的概要とその実際道具としての機械学習:直感的概要とその実際
道具としての機械学習:直感的概要とその実際
 
深層学習の不確実性 - Uncertainty in Deep Neural Networks -
深層学習の不確実性 - Uncertainty in Deep Neural Networks -深層学習の不確実性 - Uncertainty in Deep Neural Networks -
深層学習の不確実性 - Uncertainty in Deep Neural Networks -
 
ベイジアンディープニューラルネット
ベイジアンディープニューラルネットベイジアンディープニューラルネット
ベイジアンディープニューラルネット
 
EMアルゴリズム
EMアルゴリズムEMアルゴリズム
EMアルゴリズム
 
Fisher Vectorによる画像認識
Fisher Vectorによる画像認識Fisher Vectorによる画像認識
Fisher Vectorによる画像認識
 
PRML上巻勉強会 at 東京大学 資料 第1章前半
PRML上巻勉強会 at 東京大学 資料 第1章前半PRML上巻勉強会 at 東京大学 資料 第1章前半
PRML上巻勉強会 at 東京大学 資料 第1章前半
 
ELBO型VAEのダメなところ
ELBO型VAEのダメなところELBO型VAEのダメなところ
ELBO型VAEのダメなところ
 
データに内在する構造をみるための埋め込み手法
データに内在する構造をみるための埋め込み手法データに内在する構造をみるための埋め込み手法
データに内在する構造をみるための埋め込み手法
 
[DL輪読会]Model-Based Reinforcement Learning via Meta-Policy Optimization
[DL輪読会]Model-Based Reinforcement Learning via Meta-Policy Optimization[DL輪読会]Model-Based Reinforcement Learning via Meta-Policy Optimization
[DL輪読会]Model-Based Reinforcement Learning via Meta-Policy Optimization
 
変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)
 
[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video Processing (NeRF...
[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video  Processing (NeRF...[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video  Processing (NeRF...
[DL輪読会]Neural Radiance Flow for 4D View Synthesis and Video Processing (NeRF...
 
計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-
 
特徴選択のためのLasso解列挙
特徴選択のためのLasso解列挙特徴選択のためのLasso解列挙
特徴選択のためのLasso解列挙
 
Generating Diverse High-Fidelity Images with VQ-VAE-2
Generating Diverse High-Fidelity Images with VQ-VAE-2Generating Diverse High-Fidelity Images with VQ-VAE-2
Generating Diverse High-Fidelity Images with VQ-VAE-2
 

Viewers also liked

каталог фаберлик 5 2016
каталог фаберлик 5 2016каталог фаберлик 5 2016
каталог фаберлик 5 2016ivgen08
 
01 2015-small
01 2015-small01 2015-small
01 2015-smallivgen08
 
Cat pdf-09-2015-small
Cat pdf-09-2015-smallCat pdf-09-2015-small
Cat pdf-09-2015-smallivgen08
 
Dell pc support number 1-866-757-9494
Dell pc support number 1-866-757-9494Dell pc support number 1-866-757-9494
Dell pc support number 1-866-757-9494Tech Cillin
 
教師の資質能力に対する認識のズレ―アクターとしての大学と教育委員会に着目した実証分析―
教師の資質能力に対する認識のズレ―アクターとしての大学と教育委員会に着目した実証分析―教師の資質能力に対する認識のズレ―アクターとしての大学と教育委員会に着目した実証分析―
教師の資質能力に対する認識のズレ―アクターとしての大学と教育委員会に着目した実証分析―Shinnji Matsumiya
 
Madonna della Neve al Feo di Altavilla Silentina. Salerno
Madonna della Neve al Feo di Altavilla Silentina. Salerno Madonna della Neve al Feo di Altavilla Silentina. Salerno
Madonna della Neve al Feo di Altavilla Silentina. Salerno L. A.
 
детская одежда фаберлик
детская одежда фаберликдетская одежда фаберлик
детская одежда фаберликivgen08
 
110215_Irrigation_Leader_Snow_Article
110215_Irrigation_Leader_Snow_Article110215_Irrigation_Leader_Snow_Article
110215_Irrigation_Leader_Snow_ArticleMatt Hoobler
 
каталог фаберлик 15
каталог фаберлик 15каталог фаберлик 15
каталог фаберлик 15ivgen08
 

Viewers also liked (14)

プログラミングTeX
プログラミングTeXプログラミングTeX
プログラミングTeX
 
каталог фаберлик 5 2016
каталог фаберлик 5 2016каталог фаберлик 5 2016
каталог фаберлик 5 2016
 
01 2015-small
01 2015-small01 2015-small
01 2015-small
 
Cougars Overview
Cougars OverviewCougars Overview
Cougars Overview
 
Asian landscapes
Asian landscapesAsian landscapes
Asian landscapes
 
Cat pdf-09-2015-small
Cat pdf-09-2015-smallCat pdf-09-2015-small
Cat pdf-09-2015-small
 
Dell pc support number 1-866-757-9494
Dell pc support number 1-866-757-9494Dell pc support number 1-866-757-9494
Dell pc support number 1-866-757-9494
 
innovation
innovation innovation
innovation
 
Checking E-mail
Checking E-mailChecking E-mail
Checking E-mail
 
教師の資質能力に対する認識のズレ―アクターとしての大学と教育委員会に着目した実証分析―
教師の資質能力に対する認識のズレ―アクターとしての大学と教育委員会に着目した実証分析―教師の資質能力に対する認識のズレ―アクターとしての大学と教育委員会に着目した実証分析―
教師の資質能力に対する認識のズレ―アクターとしての大学と教育委員会に着目した実証分析―
 
Madonna della Neve al Feo di Altavilla Silentina. Salerno
Madonna della Neve al Feo di Altavilla Silentina. Salerno Madonna della Neve al Feo di Altavilla Silentina. Salerno
Madonna della Neve al Feo di Altavilla Silentina. Salerno
 
детская одежда фаберлик
детская одежда фаберликдетская одежда фаберлик
детская одежда фаберлик
 
110215_Irrigation_Leader_Snow_Article
110215_Irrigation_Leader_Snow_Article110215_Irrigation_Leader_Snow_Article
110215_Irrigation_Leader_Snow_Article
 
каталог фаберлик 15
каталог фаберлик 15каталог фаберлик 15
каталог фаберлик 15
 

Similar to TEX マクロプログラミング

AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版ありますAI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版ありますfukuoka.ex
 
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」fukuoka.ex
 
Excelマクロ・vbaについて
Excelマクロ・vbaについてExcelマクロ・vbaについて
Excelマクロ・vbaについてYoshinori Kamaishi
 
JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編陽平 山口
 
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話terurou
 
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?Shinichi Hirauchi
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門masatora atarashi
 
pi-3. 式の抽象化とメソッド
pi-3. 式の抽象化とメソッドpi-3. 式の抽象化とメソッド
pi-3. 式の抽象化とメソッドkunihikokaneko1
 

Similar to TEX マクロプログラミング (11)

AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版ありますAI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【旧版】※新版あります
 
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
【macOSにも対応】AI入門「第3回:数学が苦手でも作って使えるKerasディープラーニング」
 
Excelマクロ・vbaについて
Excelマクロ・vbaについてExcelマクロ・vbaについて
Excelマクロ・vbaについて
 
Tdd
TddTdd
Tdd
 
JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編
 
20121215 DevLOVE2012 Mahout on AWS
20121215 DevLOVE2012 Mahout on AWS20121215 DevLOVE2012 Mahout on AWS
20121215 DevLOVE2012 Mahout on AWS
 
大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話大規模なギョームシステムにHaxeを採用してみた話
大規模なギョームシステムにHaxeを採用してみた話
 
C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?C# から java へのプログラム移植で体験したtddの効果は?
C# から java へのプログラム移植で体験したtddの効果は?
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
 
pi-3. 式の抽象化とメソッド
pi-3. 式の抽象化とメソッドpi-3. 式の抽象化とメソッド
pi-3. 式の抽象化とメソッド
 
jenkinsで遊ぶ
jenkinsで遊ぶjenkinsで遊ぶ
jenkinsで遊ぶ
 

TEX マクロプログラミング