SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.
[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.
[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.Deep Learning JP
 
MixMatch: A Holistic Approach to Semi- Supervised Learning
MixMatch: A Holistic Approach to Semi- Supervised LearningMixMatch: A Holistic Approach to Semi- Supervised Learning
MixMatch: A Holistic Approach to Semi- Supervised Learningharmonylab
 
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイント
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイントセグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイント
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイントNaoto Tamiya
 
Transformerを雰囲気で理解する
Transformerを雰囲気で理解するTransformerを雰囲気で理解する
Transformerを雰囲気で理解するAtsukiYamaguchi1
 
【DL輪読会】DayDreamer: World Models for Physical Robot Learning
【DL輪読会】DayDreamer: World Models for Physical Robot Learning【DL輪読会】DayDreamer: World Models for Physical Robot Learning
【DL輪読会】DayDreamer: World Models for Physical Robot LearningDeep Learning JP
 
大規模言語モデルとChatGPT
大規模言語モデルとChatGPT大規模言語モデルとChatGPT
大規模言語モデルとChatGPTnlab_utokyo
 
クラシックな機械学習の入門  9. モデル推定
クラシックな機械学習の入門  9. モデル推定クラシックな機械学習の入門  9. モデル推定
クラシックな機械学習の入門  9. モデル推定Hiroshi Nakagawa
 
TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門tak9029
 
異常の定義と推定
異常の定義と推定異常の定義と推定
異常の定義と推定Satoshi Hara
 
[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習Deep Learning JP
 
近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer近年のHierarchical Vision Transformer
近年のHierarchical Vision TransformerYusuke Uchida
 
Semi supervised, weakly-supervised, unsupervised, and active learning
Semi supervised, weakly-supervised, unsupervised, and active learningSemi supervised, weakly-supervised, unsupervised, and active learning
Semi supervised, weakly-supervised, unsupervised, and active learningYusuke Uchida
 
画像処理AIを用いた異常検知
画像処理AIを用いた異常検知画像処理AIを用いた異常検知
画像処理AIを用いた異常検知Hideo Terada
 
クラシックな機械学習の入門 6. 最適化と学習アルゴリズム
クラシックな機械学習の入門  6. 最適化と学習アルゴリズムクラシックな機械学習の入門  6. 最適化と学習アルゴリズム
クラシックな機械学習の入門 6. 最適化と学習アルゴリズムHiroshi Nakagawa
 
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion ModelsDeep Learning JP
 
画像認識モデルを作るための鉄板レシピ
画像認識モデルを作るための鉄板レシピ画像認識モデルを作るための鉄板レシピ
画像認識モデルを作るための鉄板レシピTakahiro Kubo
 
SSII2022 [OS3-03] スケーラブルなロボット学習システムに向けて
SSII2022 [OS3-03] スケーラブルなロボット学習システムに向けてSSII2022 [OS3-03] スケーラブルなロボット学習システムに向けて
SSII2022 [OS3-03] スケーラブルなロボット学習システムに向けてSSII
 
東京大学2020年度深層学習(Deep learning基礎講座) 第9回「深層学習と自然言語処理」
東京大学2020年度深層学習(Deep learning基礎講座) 第9回「深層学習と自然言語処理」東京大学2020年度深層学習(Deep learning基礎講座) 第9回「深層学習と自然言語処理」
東京大学2020年度深層学習(Deep learning基礎講座) 第9回「深層学習と自然言語処理」Hitomi Yanaka
 

Mais procurados (20)

[DL輪読会]World Models
[DL輪読会]World Models[DL輪読会]World Models
[DL輪読会]World Models
 
[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.
[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.
[DL輪読会]深層強化学習はなぜ難しいのか?Why Deep RL fails? A brief survey of recent works.
 
MixMatch: A Holistic Approach to Semi- Supervised Learning
MixMatch: A Holistic Approach to Semi- Supervised LearningMixMatch: A Holistic Approach to Semi- Supervised Learning
MixMatch: A Holistic Approach to Semi- Supervised Learning
 
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイント
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイントセグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイント
セグメント?クラスタリング? ユーザーを分類し、サービスの改善に活かすポイント
 
Transformerを雰囲気で理解する
Transformerを雰囲気で理解するTransformerを雰囲気で理解する
Transformerを雰囲気で理解する
 
【DL輪読会】DayDreamer: World Models for Physical Robot Learning
【DL輪読会】DayDreamer: World Models for Physical Robot Learning【DL輪読会】DayDreamer: World Models for Physical Robot Learning
【DL輪読会】DayDreamer: World Models for Physical Robot Learning
 
大規模言語モデルとChatGPT
大規模言語モデルとChatGPT大規模言語モデルとChatGPT
大規模言語モデルとChatGPT
 
クラシックな機械学習の入門  9. モデル推定
クラシックな機械学習の入門  9. モデル推定クラシックな機械学習の入門  9. モデル推定
クラシックな機械学習の入門  9. モデル推定
 
TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門TensorFlowをもう少し詳しく入門
TensorFlowをもう少し詳しく入門
 
異常の定義と推定
異常の定義と推定異常の定義と推定
異常の定義と推定
 
[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習[DL輪読会]Deep Learning 第15章 表現学習
[DL輪読会]Deep Learning 第15章 表現学習
 
近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer
 
Semi supervised, weakly-supervised, unsupervised, and active learning
Semi supervised, weakly-supervised, unsupervised, and active learningSemi supervised, weakly-supervised, unsupervised, and active learning
Semi supervised, weakly-supervised, unsupervised, and active learning
 
画像処理AIを用いた異常検知
画像処理AIを用いた異常検知画像処理AIを用いた異常検知
画像処理AIを用いた異常検知
 
クラシックな機械学習の入門 6. 最適化と学習アルゴリズム
クラシックな機械学習の入門  6. 最適化と学習アルゴリズムクラシックな機械学習の入門  6. 最適化と学習アルゴリズム
クラシックな機械学習の入門 6. 最適化と学習アルゴリズム
 
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
【DL輪読会】High-Resolution Image Synthesis with Latent Diffusion Models
 
画像認識モデルを作るための鉄板レシピ
画像認識モデルを作るための鉄板レシピ画像認識モデルを作るための鉄板レシピ
画像認識モデルを作るための鉄板レシピ
 
continual learning survey
continual learning surveycontinual learning survey
continual learning survey
 
SSII2022 [OS3-03] スケーラブルなロボット学習システムに向けて
SSII2022 [OS3-03] スケーラブルなロボット学習システムに向けてSSII2022 [OS3-03] スケーラブルなロボット学習システムに向けて
SSII2022 [OS3-03] スケーラブルなロボット学習システムに向けて
 
東京大学2020年度深層学習(Deep learning基礎講座) 第9回「深層学習と自然言語処理」
東京大学2020年度深層学習(Deep learning基礎講座) 第9回「深層学習と自然言語処理」東京大学2020年度深層学習(Deep learning基礎講座) 第9回「深層学習と自然言語処理」
東京大学2020年度深層学習(Deep learning基礎講座) 第9回「深層学習と自然言語処理」
 

Destaque

каталог фаберлик 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
 

Destaque (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
 

Semelhante a 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
 

Semelhante a 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 マクロプログラミング