マクロツイーター

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

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

きょうの XeTeX (3) : \XeTeXinputencoding, \XeTeXdefaultencoding

例の Qiita の記事で触れたように、XeTeX エンジンには入力ファイルの文字コードを選択する機能がある。 \XeTeXinputencoding <文字コード名> :[命令] 現在読込中のファイルの、以降のテキスト行の文字コードを指定する。設定は常にグローバルである。 \X…

TeX なのに文字列をクオートする話(2)

TeX

(前回の続き) TeX なのにクオートした文字列に関する注意 \input や \font 等の「クオートで囲める引数」をとるプリミティブについて、引数の終結の規則について詳しくみておく。 簡単に言うと、「bash やコマンドプロンプトのクオートと同じ」である。す…

TeX なのに文字列をクオートする話(1)

TeX

ごく一般的なプログラミング言語の多くでは、文字列のリテラルをクオート(ダブルクオーテーション、"...")で囲った形で表す。[hello.mp] % "TeX-comedian" や "Hello, " が文字列リテラル string person; person = "TeX-comedian"; message ("Hello, " & p…

\the っぽくない \the

TeX

TeX 言語のプリミティブ \the は色々なパラメタやレジスタの現在の値を調べるのに用いられる。 \the が \the-文字列になる例 以下は、整数、寸法、グルー値の値をもつパラメタ・レジスタに \the を適用した例である。\the\count255 \the\skip0 \the\year \th…

XeTeX の謎の正規化の謎についての補足

前回の続きの話。XeTeX が文字を出力する際に行う「正規化」についてもう少し調べてみる。 % plain XeTeX/LuaTeX 文書, 文字コードは UTF-8 \ifdefined\luatexversion \input luaotfload.sty \fi \font\fTest="[OpenSans-Regular.ttf]:-liga" \fTest % NFDで…

NFD な濁点仮名を XeLaTeX できる謎

某 Qiita の記事の中の以下の記述についての話。 なお、実際に試した限りでは、XeLaTeX で「〈か+結合濁点〉を出力」させると、(フォントが“合成に対応”していなくても)常に〈が〉の文字(グリフ)が出力されるようである。他の濁点・半濁点付きの仮名につ…

「クロップしない pdfcrop」的なものを使って PDF をクロップしない話

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…

きょうの XeTeX (2) : \XeTeXinputnormalization

「XeTeX で Unicode 正規化する件」に関するプリミティブ。 \XeTeXinputnormalization :[整数パラメタ・読書可] テキスト行読込の際に適用される正規化の種類を指定する: 0=処理なし、1=NFC、2=NFD。 例えば、\XeTeXinputnormalization=1 % これ以降はNF…

きょうの XeTeX (1) : \XeTeXfirstfontchar、\XeTeXlastfontchar

XeTeX において絶対覚えておくべきプリミティブ 2 つ。 \XeTeXfirstfontchar<フォント> :[整数パラメタ・読取専用] 指定のフォントでサポートする文字符号値の最小値。 \XeTeXlastfontchar<フォント> :[整数パラメタ・読取専用] 指定のフォントでサポ…

きょうの LuaTeX (1) : \suppressfontnotfounderror

前回の記事で、\suppressfontnotfounderror というプリミティブが登場したので、折角だからこれの解説をすることにした。なお、タイトル名は以前の記事のものを元ネタとしている。LuaTeX の仕様が毎日変わる、とかいう話では(残念ながら?)ない。 \suppres…

「LaTeX でサブディレクトリがナントカカントカ」に関する何か

TeX

コレについての詳細の話。 LaTeX でサブディレクトリが自動的に探索されるようにする (Qiita) 環境変数に「.//;」を設定するとカレント以下が再帰的に検索されるようになるのは何故かを説明しておく。 「.//;」てなに TEXINPUTS のような検索パスを示す変数…

新しい LuaLaTeX で bxjsarticle できる話

最新の TeX Live では LuaLaTeX で bxjsarticle できるらしい。\documentclass[lualatex,ja=standard]{bxjsarticle} \begin{document} $a + b = c$ \end{document} つまり、expl3 が改訂されてコレが解決したということ。 bxjsarticleでエラー (TeX Forum)…

LuaTeX や LaTeX や LuaLaTeX が新しくなってアレ(補足)

アレはしょうがないとして、アレとかアレになるのを防ぐにはどうすればよいか、についてまとめておく。 “新しい TeX”な人は 2015-10-01 以降に TeX Live (MacTeX、BasicTeX を含む) をアップデート(インストール)した人は 今もう一度アップデートしてお…

LuaTeX や LaTeX や LuaLaTeX が新しくなってアレ(3)

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…

LuaTeX や LaTeX や LuaLaTeX が新しくなってアレ(2)

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…

LuaTeX や LaTeX や LuaLaTeX が新しくなってアレ(1)

TeX

いや、某 Apple 社の某 OS やそこに搭載された某フォントが新しくなってアレ、の話じゃなくて、TeX 自体の話。 window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) retu…

TeX せずに Lua する LuaTeX の話(2)

(前回の続き) 以下は、texlua する際の自分用のメモ的な何か。 その Lua は texluaか 実行している Lua インタプリタが texlua か否かを判定する方法について。 kpse ライブラリ(Kpathsea のフロントエンド)があれば texlua だと判断する。if kpse then …

TeX せずに Lua する LuaTeX の話(1)

LuaTeX は「Lua できる TeX エンジン」でありその入力は普通は TeX 文書である。しかし、実は LuaTeX は Lua インタプリタとしても使用できる。 LuaTeX で Lua(だけ)してみる 例えば、次のような Lua ソースファイルを用意する。 [hello.lua]print("Hello …

cmap から CMap を作る話

コレ。 zrmakecmap.lua (Gist/zr-tex8r) 何をするものか Adobe-Identity-0 の CID をもつ日本語 OpenType フォントの cmap 情報(Unicode から CID へのマップの情報)を読みだして CMap ファイルを作るためのもの。これを利用すると、up(la)TeX + dvipdfmx …

NFD な濁点仮名を pLaTeX できる話

結論を言うと、p(La)TeX では、濁点・半濁点付きの仮名に限って、NFC に“正規化”される。 % pLaTeX 文書, 文字コードは UTF-8 \documentclass[a4paper]{jsarticle} \begin{document} % 1つ目はNFC(30C7)、2つ目はNFD(30C6 3099) デデーン \end{document} p…

El Capitan で pxchfon する話、とか

今月に入って以来続いていた「El Capitan で日本語 TeX がアレ」祭りもようやく一段落ついたようである。 さて日本語 TeX のフォントの話といえば、某 pxchfon パッケージも関係するところである。これの対応はどうかというと、一応それらしきモノは GitHub …

l3fp の式の演算子の優先順位の仕様の変更の件

TeX

某 Forum のコレについてもう少し詳しく調べてみる。 Re: lengthconvert.sty で単位変換の値がおかしい (TeX Forum;ZR 氏の返信) l3fp のどこが変わったのか 「連接による乗算」に高い優先順位を持たせているか否かが違う。 TL2013 では「連接による乗算…

LaTeX カウンタの出力を1進数にしたい

TeX

「1 進数」とかいうと何やら高級概念そうだが、要するにこういうこと。 仕様! というわけで、次のような仕様の命令 \unaryWith を実装することにしよう。(仕様は大事!) \unaryWith{<テキスト>}{<カウンタ名>} : 任意の文字(テキスト)を用いた“1 進数”…

アレwiki の extractbb のアレがアレ

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…

ドライバやドライバはなぜドライバか

TeX

えー、また「ドライバ」の話である。 前回の記事では、TeX 用語の「ドライバ」という語に少し異なる 2 つの意味があるという話をした。すなわち、「dvipdfmx 等の DVI ウェア(dvi ドライバ)」という意味と、「dvipdfmx.def などのファイル(に書かれたコー…

そのドライバはドライバか、あるいはドライバか

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…

\theナントカ で算術演算する話(3)

TeX

(前回の続き) 「出力命令」が上手くいく方法 次の手順に従うと「悩ましいカウンタ出力命令」を正常に動作させることができる。 まずは、「数値を出力に変換する」マクロを(脆弱でも何でもよいので)作る。すなわち、\format@hoge{hogeの数値の十進表記} …

\theナントカ で算術演算する話(2)

TeX

(前回の続き) さて、前回の話では、せいぜい「1 を足す」、あるいは算術演算を行う程度のことだったので、intcalc パッケージを使うくらいで事なきを得た。しかし、これが本質的に完全展開可能にできない要素、例えば「カウンタの値によってフォントを変え…

\theナントカ で算術演算する話(1)

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…

texmf.cnf の検索パスを理解したい話

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…