マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

TeXパズル

普通じゃない Hello World 文書問題

これが解けたら TeX 芸人 3 級相当。 久しぶりに TeX 芸人実力判定問題。*1 先頭ページに Hello World と出力する文書ソースを作成して下さい。 ただし、文字トークンを解答に含めることはできません。 グルーピングの{や]、マクロ引数の#なども禁止となりま…

TeX芸人実力判定問題、その6

「えるたそ」な解説の途中であるが、「えるたそ」なパズルをどうぞ。 (初心者の人は気にしないで!) TeX 芸人 2 級相当。 plain pTeX または pLaTeX において、以下の仕様を満たす完全展開可能なマクロ \eltasoname を実装せよ: \eltasoname{<正整数n>} …

TeX芸人実力判定問題、その5

これが解けたら TeX 芸人 3 級相当。 plain TeX または LaTeX(ToL) において以下の要件を満たすマクロ \letargswapped を実装せよ。 \macroA を2つの区切り無し引数を取るマクロとする。この時、\let\argswapped\macroB\macroA を実行すると、\macroB も2…

TeX芸人実力判定問題、その3(解答編)

脆弱・頑強の説明が済んだところで、改めて芸人問題の正解の話。*1 LaTeX(ToL)で、以下の要件を満たす命令 \makecounterprinter を実装せよ。 \makecounterprinter\制御綴A\制御綴B は \制御綴A を以下のようなカウンタ値出力命令として定義する。 \制御綴…

TeX芸人実力判定問題、その4

これが解けたら TeX 芸人 3 級相当。 plain TeX において、以下の仕様を満たすマクロ \numtohex を実装せよ。 \numtohex{<整数>} を実行すると、\result が「引数の整数を『2 桁の大文字 16 進数』((printf の書式で著すと %02X。))で表記した文字列(トーク…

TeX芸人実力判定問題、その2(解答)

例の \en の問題の解答。 e-TeX 拡張エンジン上の plain TeX または LaTeX において、以下の要件を満たすように制御綴 \en を定義せよ。 \en は (La)TeX の寸法指定における「単位」の位置に書くことができる。 そして、「現在の 0.5em」の長さを表す。すな…

TeX芸人実力判定問題、その3(改訂版)

元の問題は e-TeX 拡張を使うと「抜け道」ができるので、汎用的な場合に変えてみた。 LaTeX(ToL)で、以下の要件を満たす命令 \makecounterprinter を実装せよ。 \makecounterprinter\制御綴A\制御綴B は \制御綴A を以下のようなカウンタ値出力命令として…

TeX芸人実力判定問題、その3

これが解けたら TeX 芸人 5 級相当。*1 LaTeX(ToL)で、以下の要件を満たす命令 \NabeAzzLike を実装せよ。 \NabeAzzLike は \arabic や \Alph 等と同じくカウンタ値出力命令である。 \NabeAzzLike{<LaTeXカウンタ名>} は当該のカウンタの値を 10 進表記で出力するが、値が 3</latexカウンタ名>…

TeX芸人実力判定問題、その2

これが解けたら TeX 芸人 2 級相当! e-TeX 拡張エンジン上の plain TeX または LaTeX において、以下の要件を満たすように制御綴 \en を定義せよ。 \en は (La)TeX の寸法指定における「単位」の位置に書くことができる。 そして、「現在の 0.5em」の長さを…

TeX芸人実力判定問題

これが解けたら TeX 芸人二段相当!*1 plain TeX または LaTeX(ToL)で、以下の条件を満たすマクロ \length を実装せよ。 \length{<引数>} を完全展開すると引数のトークン列に含まれるトークン(制御綴も文字トークンも全て)の個数だけ *(カテゴリコード…

TeX で if-トークンを使わずにナベアツする

さて、しばらくの間 Ruby の話が続いたが、このブログの読者であれば「TeX で如何にして \if を自分で実装するか」について思案を巡らせていたであろうことは想像に難くない。しかし、残念ながら、TeX で既存の条件判断を使わずに自前の等価な実装に置き換え…

標準 LaTeX で枠付き verbatim

確かどこかの誰かが「LaTeX ユーザを大切にしよう!」とか言っていた気がするので、今回は TeX パズルでなく LaTeX パズルを出題してみる。 以下の条件の下で、「枠付きの verbatim」を実現する方法を考えよ。 パッケージを全く読み込まず、標準の LaTeX の…

文字列の置換

再び TeX 言語の練習問題を出してみる。 以下の要件を満たすマクロ \replaceWordAll を実装せよ。 \replaceWordAll{<前>}{<後>}{<対象>} は <対象> の文字列に含まれる全ての <前> に一致する部分を <対象> に置換した文字列を結果として返す。 置換の結果の…

付録の中にいるかを判定する件について

qa:56526 から始まる「付録の中にいるかの判定」についての話。 ある「解」が「正解」であるかは、当然「問題の立て方」に依存する。もし例えば 「article/report のそれと同じ意味をもつ \appendix 命令を有する」任意の文書クラスにおいて、「現在付録の…

グルー値文字列中の空白トークン

お待ちかねの(誰が?) TeX パズル。次のそれぞれのトークン列について、先頭から「グルー値」を 1 つ読んだ場合、どこまでが「グルー値を表す文字列」と解釈されるか。言い換えると、これらの前に \hskip を置いた場合、どこまでのトークン列が「その引数…

整数を読み飛ばす(解決編)

「整数を読み飛ばす」の記事での出題の解答。前置きを繰り返すのはやめて、本題だけをいうと次の通り。\prebreakpenalty〈非負整数n〉 が n の値に関わりなく \xx@dummy@count に展開されるようにマクロ \prebreakpenalty を実装せよ。(必要ならば追加のレ…

整数を読み飛ばす

「TeX パズル」の第 2 段。いま、日本語が通る「ナントカTeX」があったとして、それで pTeX の動作をエミュレートしたい、という状況を想定する。その「ナントカTeX」は日本語を含む TeX 文書を処理することができるが、残念ながら \ybaselineshift(寸法パ…

指定のコードの和文トークンを得る方法(解決編)

2011-02-03 に「TeX パズル」を出題していつの間にか 30 日後が過ぎてしまったようである。問題は「指定のコードの和文トークンを得る命令」を作る、つまり次のようなマクロ \getjchartoken を実装するものであった。 % \getjchartoken \制御綴{} % 内部漢字…

指定のコードの和文トークンを得る方法

以前の記事で用いた「\lowercase トリック」は、「整数値をその符号値をもつ文字トークンに変換する」ための常套手段である。 {\lccode`?=〈整数n〉\lowercase{\gdef\token{?}}}単純に「符号値 n の文字を出力したい」のであれば \char〈n〉 で事足りる。し…