マクロツイーター

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

2012-01-01から1年間の記事一覧

それでも TeX でプログラミングしたい人のための何か (6)

補足: TeX に関数はないといえなくもない事情前回の記事では、(戻り値のある)関数を(戻り値のない)手続きに置き換えるという変換操作を行った。そしてそれが必要な理由としてTeX には関数がないと述べた。ところがこれについて違和感を持つ人がいるかも…

それでも TeX でプログラミングしたい人のための何か (5)

あるいは 〜私の TeX プログラム変換環境〜 ステップ 3 : 関数に関連する処理を行う 元のプログラムは前回の記事の最後に掲載した eltaso1.lua。 関数を追放する ここで「関数」というのは「戻り値を返す手続き」(だから式の中で使うことができる)のこと…

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

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

それでも TeX でプログラミングしたい人のための何か (4)

あるいは 〜私の TeX プログラム変換環境〜ステップ 2 : 変数関連の処理を行うここからは、Lua 言語の範疇において、元のプログラムを「TeX に近い」形に変換していく。元のプログラムを再掲しておく。[eltaso0.lua] alpha_name = { [0] = "ぜっと", "えー"…

それでも TeX でプログラミングしたい人のための何か (3)

あるいは 〜私の TeX プログラム変換環境〜 ステップ 1 : 仕様を決める 早速プログラムの変換を始めたいところだが、その前に。 パッケージの名前を決める すなわち \eltaso の実装コードを書きこむ .sty ファイルの名前を決める。ここでは tceltaso と命名…

それでも TeX でプログラミングしたい人のための何か (2)

(前回の続き) 解説の方針とか 当初、「このそれぞれの項目について詳細を説明する」という感じで記事を書いていこうと思っていた。しかしそうするとどうしても重たい解説が長く続くことになり、読者の負担になる恐れがある。ちょうど「普通の言語のプログ…

それでも TeX でプログラミングしたい人のための何か (1)

TeX 言語は他の一般に普及しているプログラム言語に比べると、習得が難しいと言われることが多い。その主因の一つだと思われるのが、TeX の実行モデルが他の言語と大きく異なることである。TeX 言語はその実行制御を「マクロの展開」という文字列(正確には…

TeX ユーザの集い 2012 のアレ

TeX

参加レポートだと思った? 残念!(ry 集い場の活動記録/2012年 単に直前にブログに出したネタを印刷しただけで、特に「集い限定新ネタ」ではなかったのでご安心を。(何がだ)

TeX でマンデルブロ集合する件について

TeX

まあ、やろうと思い始めた以上は、片付けないといけないんでしょうね。 TeX の(寸法値を用いた)実数演算は固定小数点で小数部が 16 ビットの精度しかないが、結果の図に目に見える違いは現れなかった。計算時間も 2 分程度で問題なし。 一番苦労したのは、…

某「集い」ひとり前夜祭

TeX

素敵な \expandafter に巡り会えますように!Happy \expandafter \expandafter\expandafter\expandafter{}\def\expandafTer% #1#2#3#4#5#6#7{#4#5##1##2##3##4##5{##2##3##4##5##1}#4#2##1##2{#4##1####1{##2}}% #4#3##1##2##3##4##5{##5##1##2##3##4}#4#1##…

TeX Live での(DVIウェア側の)用紙サイズの既定をA4にしたい

TeX

導入 LaTeX の用紙サイズの扱いは(歴史的な理由で)ややこしいということは、LaTeX をある程度使い続けている人なら知っている(はずの)事実である。すなわち、 LaTeX が文書のレイアウトを決めるために用いる用紙サイズ DVI ウェアが実際に(紙、PS 文書…

てふてふの大群がとんでゐます

TeX

バタバタバタバタバタバタ……*1 エンジン・フォーマット・コマンドの対応についての現在の状況。 [世界中で知られているエンジン] フォーマット \ エンジンLuaTeXpdfTeXXeTeXAlephTeX LaTeXPDF 出力LuaLaTeXlualatexpdfLaTeXpdflatexXeLaTeXxelatex―― DVI …

エンコーディング定義の改変はやっぱりアレな感じ (1)

先日、kerkis パッケージの中身を調べていたら、次のように、OT1 エンコーディングの定義を改変するコードを見つけた。 \DeclareTextSymbol{\textperthousand}{OT1}{137} \DeclareTextSymbol{\textsterling}{OT1}{163} \DeclareTextSymbol{\L}{OT1}{6} \Decl…

TeX の行分割の規則が和文絡みでアレな例

TeX

欧文 TeX での行分割処理において、分割可能な個所は「破棄可能物(discardable item;グル―・カーン・ペナルティの総称)」*1またはディスクレショナリ(discretionary)の位置に限られ、*2その他の位置で分割されることはない。それでは pTeX 系の和文文字…

Web 上にあるファイルを \read する件について

TeX

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

pTeX で \showbox すると和文間空白がアレ

TeX

TeX で複雑な組版を行うマクロの動作確認をする時に欠かせないのが \showbox であるが、和文が絡む場合は注意すべき点がある。それについての話。 確認:\showbox の使い方 本題に入る前に、まず \showbox の使い方を復習しよう。機能の説明は非常に単純で、…

手書きの「クラインの壺」をTikZコード化する件について

TeX

参考: diagrams - Making a labeled Klein bottle using TikZ or pgfplots? - TeX - LaTeX: えっ!?手書きの「クラインの壺(つぼ)」をTikZコード化!? ― いわにぃのブログ できたーーー!!\documentclass[a4paper]{article} \usepackage{tikz} \begin{…

和文を箱に詰め込む、別の話

前回に続いて、和文の調整絡みで混乱する例の話。 次の例は非標準的な濁点付き仮名の出力を、単独の濁点文字〈゛〉(1区11点;U+309B)を位置調整して出力することで実現しようとした例である。(以下、水平モードでの実行を仮定する。)\hbox to 1zw{イ゛}…

和文処理のグルーに関するある誤解

TeX

pTeX では和文組版に関する処理を行うために文字間にグルーを挿入している。このグルーの挿入の規則の詳細については非常に複雑で理解困難であるため、それに関する誤解をよく見かける。ここでは和文を \hbox に入れる処理に関する間違いを紹介する。次のコ…

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

定義をまとめてみた。 (トークンが)展開可能(expandable) そのトークンが実行対象になった場合に、直接実行されるのでなく、一旦他のトークン列に置き換えられる(「展開される」)こと。展開の際に後続のトークンを含めて置換対象になることがある。例…

もう脆弱性なんて怖くない(※ただしLaTeXの意味で)(4)

TeX

(前回の続き) 補足1: 普通に実行される時 「保護」の機構は飽くまで「保護付完全展開」の時に意味をもつものなので、「普通に実行される時」、すなわち展開限定でない文脈ではマクロの動作に影響を与えない設計になっている。すなわち、展開限定文脈外では…

もう脆弱性なんて怖くない(※ただしLaTeXの意味で)(3)

TeX

(前回の続き) 保護しても頑強にならないという罠 それでは話を \NabeAzzLike に戻そう。問題で求められているのは「\NabeAzzLike を頑強にすること」である。すると、最も単純な解決方法は、そのマクロを「生来的に保護付」にする、つまり \DeclareRobustC…

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

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

dvipdfmx で preview パッケージする件について

TeX

LaTeX のコードで書かれた図や数式*1から「タイトな」―すなわち図のある領域のみからなり無駄な余白のない―画像ファイルを作成する方法の一つとして preview パッケージを使うというものがある。 preview パッケージの概要 [test.tex]\documentclass{article…

もう脆弱性なんて怖くない(※ただしLaTeXの意味で)(2)

TeX

(前回の続き) 「保護付」の完全展開 特別な措置とは、具体的には次のようなものである。 完全展開する際に、「保護(protect)」されたトークンは展開されない。 このような展開のことを「保護付き完全展開(protected full expansion)」と呼ぶことにする…

もう脆弱性なんて怖くない(※ただしLaTeXの意味で)(1)

TeX

LaTeX において、ユーザからの自由なテキスト(LaTeX の命令を含みうる)の入力を受け付ける(ToL の)マクロを実装しようとすると、「脆弱(fragile)」なマクロの取扱に関する知識が必要な場合がある。カウンタ出力命令を作る芸人実力判定問題の核心部分の…

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

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

ギリシャ文字もラテン文字も数字も、でも時々、CM Bright をつかってみた

今回は、ある環境中のギリシャ文字のみを Computer Modern Bright のそれらに置き換えるので、以下のように cmbr を接頭辞を付加した cmbrletters という名前で、Computer Modern Bright の数式イタリックを場当たり的に定義しておいて、その環境中で \alpha…