マクロツイーター

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

LuaTeX の検索結果:

LaTeX で \newfont したい話 (bxnewfont パッケージ)(補足)

…が、XeTeX や LuaTeX(+ luaotfload)においてはここに OpenType フォントの名前(および拡張子付のファイル名)を書くことができる。% plain XeTeX 文書 \font\fcomic="Comic Sans MS/I" {\fcomic Thnaks {\TeX}, and Good-bye!} \newfontx(*) 命令においてもフォント名の部分を \font や \newfont と同じ書式で書くことができる。% XeLaTeX 文…

BXjscls の新しいやつ(v1.2)

…れてドライバ指定は luatex となる。((ここで dvi=dvipdfmx の代わりに dvipdfmx を指定してしまうと、LuaLaTeX でコンパイルした場合に「ドライバ指定がおかしい!」と怒られる。)) この dvi オプションは以前に存在した「dvipdfmx-if-dvi」を他のドライバにも適用できるように一般化したものである。((今のところ、dvipdfmx-if-dvi は非推奨になったわけではないので、これを使っても(残念ながら)警告は出ない。)) ma…

とある LuaTeX クイズの正解

…。 This is LuaTeX, Version 0.95.0 (TeX Live 2016/W32TeX) restricted system commands enabled. (./quiz.tex LaTeX2e <2016/03/31> patch level 1 Babel <3.9r> and hyphenation patterns for 1 language(s) loaded. ……(中略)…… (see the transcript file for…

pTeX のプリミティブを把握したい話

TeX

…TeX、XeTeX、LuaTeX が「SyncTeX 拡張」をもつが, \synctex を持っているのは「e-TeX 拡張をもつもの」(つまり e- でない pTeX と upTeX 以外)に限られる。 pdfTeX 互換拡張プリミティブ \ifpdfprimitive \pdfcreationdate \pdffiledump \pdffilemoddate \pdffilesize \pdflastxpos \pdflastypos \pdfmdfivesum \pdf…

LaTeX でもっともっとカラー絵文字する話(bxcoloremoji v0.3a)

…document} LuaTeX-ja の縦組みモードにも対応している。 % LuaLaTeX 文書; 文字コードは UTF-8 \documentclass[a4paper]{ltjsarticle} \usepackage{graphicx} \usepackage{lltjext}% 組方向拡張 \begin{document} \parbox{5\zw}{夏は\coloremoji{☃}。} \end{document} CJK パッケージ対応 (pdf)LaTeX …

LuaTeX が直接 Type1 する件が結局解らなかった

…ということは、実は LuaTeX では OpenType だけでなく、Type1 フォントの“直接”指定ができる(できた)ということなのか。調べてみたけど、何だかよくわからない、という話。 “TFM 経由”と“直接” 新しい TeX エンジンにおいては、フォントの指定方法には次の 2 種類がある。 “TFM 経由”: オリジナルの TeX と同じで、TFM ファイル(*.tfm)を用意して、それに物理フォントをマップする、という方法。 pdfTeX では PK 形式、PFB …

LuaTeX のよくある(よくない)光景

TeX

…る。% plain LuaTeX document %\mathchardef\beta="010C % in plain TeX \Umathchardef\BETA=0"0"10C {\tt\meaning\beta}\par % What is \beta? {\tt\meaning\BETA}\par % What is \BETA? $\beta$-redex, or $\BETA$-redex?\bye コレを LuaTeX 0.80.0 でコンパイルすると……。…

\write18 よりヤバい \write16 の話

TeX

…の記事では「新しい LuaTeX で \write18 できない話」をした。新しい(0.85 版以降)LuaTeX で「\write18 でシェル実行を行う」という文法が廃止されたのにはそれなりの理由がある。 なぜ \write18 できないのか それは、「出力ストリーム(\openout)の個数を従来の 16 から 128 に増長した」ことである。つまり新しい LuaTeX では次のコードが通るようになる。\openout18=hoge.txt そうすると、これを実行した後…

新しい LuaTeX だって \write18 したい

TeX

…0.85 版以降の)LuaTeX では「\write18 でシェル実行(外部コマンドの実行)する」ことができなくなっている。% 残念ながら新しいLuaTeXでは動作しない \immediate\write18{rm thesis-slide.tex} じゃあ新しい LuaTeX でシェル実行したい場合はどうすればよいか、という話。 Lua でシェル実行しよう LuaTeX なので当然 Lua ができる。そして、Lua にはシェル実行のための関数 os.execute() が存…

LuaTeX がますます新しくなってますますアレ

… 半年前あたりから LuaTeX が“リストラ”を進めていて、大きな仕様変更が続いている。 バージョン 0.81 において、プリミティブの名称に関する整理が行われた。この結果、pdfTeX との(プリミティブ名に関する)互換性が劣化した。 LuaTeX や LaTeX や LuaLaTeX が新しくなってアレ(1) バージョン 0.85 において、プリミティブの名称に関して根本的な方針の転換が行われた。この結果、pdfTeX との(プリミティブ名に関する)互換性がほぼ失われた…

きょうの pTeX (1): \kansuji、\kansujichar

TeX

…ろう。 XeTeXやLuaTeXでUnicode文字を置き換えるマクロ (アレ Forum) そこでは、XeTeX や LuaTeX について「整数値をその符号値をもつ文字トークンに変換したい」という要望があり、それに対して「\Uchar プリミティブ」「\lowercase トリック」という 2 つの解決法が示されている。((いや、前田さんの示した「TeX エスケープ(^^ab)の文字列を作って \scantokens する」も入れると 3 つか……。))このうち、XeTe…

きょうの LuaTeX (4) ー \Ustack

… 前回の「きょうの LuaTeX」では、\mathstyle という「現在の数式スタイルを判定する」ためのプリミティブを紹介した。既にそこで述べたように、\over や \abovewithdelims などの「汎化分数」のサブ数式の中では、“TeX の実装上の制限”のため、\mathstyle が正しい値を返せない。この制限を緩和する目的で用意された拡張プリミティブが \Ustack である。汎化分数をなすグループ({...} で囲われた部分)の直前にこれを配置すると、グル…

きょうの LuaTeX (3) ー \mathstyle

…法である。ところが LuaTeX ではもっと直接的に「現在の数式スタイル」が判定できる、だったらよかったのに、という話。 \mathstyle を使う話 \mathstyle プリミティブは、「現在の数式スタイル」が 8 つのうちの何れかに応じて 0〜7 の整数値を示す。数式外では −1 の値を示す。\mathstyle を利用して例えば次のようなマクロを作ることができる。 [showms.def]% \showMS: 現在の数式スタイルの情報を端末に表示する. \def\s…

例の BXbase の何かの話(1)

TeX

…r % XeTeX/LuaTeXの場合 \let\bxInputJaEncoding=u% utf8 \else\ifbxinpdfTeX % pdfTeXの場合 \let\bxInputJaEncoding=b% bytes \else\ifbxtb@pxbase@ok % PXbaseがインストール済の場合 % 判定用ファイル(1)を用いて入力漢字コードを判定する \@@input pxbsjc.def\relax \def\bxtb@tmpb#1#2\@nil{% \i…

きょうの LuaTeX(2) ― \crampeddisplaystyle 等

…が、冒頭に紹介した LuaTeX の拡張プリミティブである。つまり、例えば \crampedtextstyle を実行すると、以前が“8 つ”のスタイルのどれであったとしても、「cramped なテキストスタイル(T′)」に変更される。 % plain LuaTeX $$ {\textstyle A^2}, % T {\crampedtextstyle A^2}, % T' {\scriptstyle A^2}, % S {\crampedscriptstyle A^2}. …

bxokumacro パッケージが新しくなった件

…uaLaTeX + LuaTeX-ja パッケージ。 pdfLaTeX 上で、BXJS クラス(BXjscls パッケージの文書クラス)を“標準設定”(standard 和文ドライバ)で用いている場合。ただし以下のような制限がある。 \kenten 命令は未対応。 和文を含む命令名は使えないので、\挨拶→\AISATSU、\曜→\YOU、\――→\DDASH*4の「代替名」を使う必要がある。 というわけで、bxokumacro を使うと、pdfLaTeX でも挨拶やルビができ…

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

TeX

…する話面白いことに、LuaTeX エンジンでは、\input 等のファイル名の引数や \font のフォント名の引数において「波括弧で囲む」という規則が適用されている。*7LuaTeX は新しいエンジンなので(波括弧入りのファイル名に関する)互換性を考える必要が無かったので一貫性のある方法を採用したのだろう。 \input{hello tex world} \font\ftmr={Times New Roman} (続く) *1:引数の終結のための空白トークンは吸収される。な…

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

…ain XeTeX/LuaTeX 文書, 文字コードは UTF-8 \ifdefined\luatexversion \input luaotfload.sty \fi \font\fTest="[OpenSans-Regular.ttf]:-liga" \fTest % NFDで表す A LÉGPÁRNÁS HAJÓM TELE VAN ANGOLNÁKKAL. % <έ> は U+1F73, これは U+03AD への単元正規分解をもつ τέχνη % Open…

きょうの LuaTeX (1) : \suppressfontnotfounderror

…を元ネタとしている。LuaTeX の仕様が毎日変わる、とかいう話では(残念ながら?)ない。 \suppressfontnotfounderror :[整数パラメタ・読書可] この値が正の数である場合、\font プリミティブで指定された“フォント”が見つからなかった場合のエラーが抑止される。 要するに名前の通りなのであるが、もう少し詳しく説明しよう。 通常は、TeX エンジンは \font プリミティブで指定された“フォント”が見つからないとエラーを出す。((なお、LuaTe…

新しい LuaLaTeX で bxjsarticle できる話

…efined:D \luatexsuppressfontnotfounderror \tex_let:D \luatex_alignmark:D \luatexalignmark \tex_let:D \luatex_aligntab:D \luatexaligntab \tex_let:D \luatex_attribute:D \luatexattribute \tex_let:D \luatex_attributedef:D \luatexattributedef ..…

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

…))This is LuaTeX, Version beta-0.80.0 (TeX Live 2015/W32TeX) (rev 5238) restricted \write18 enabled. (c:/texlive/2015/texmf-dist/tex/generic/knuth-lib/null.tex LaTeX2e <2015/10/01> patch level 1 Babel <3.9m> and hyphenation patterns for 79 …

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

TeX

…var i=0;i LuaTeX と LuaLaTeX の大きな変更がほぼ同時に起こっていて非常にややこしい。*1 LuaLaTeX のプリミティブはどうだったか、どうなったか 両方の変更ともプリミティブの名前に関係しているので、ここで改めて LuaLaTeX でのプリミティブの扱いについて説明しておく。 LuaTeX はそれ以前に存在した種々のエンジンの機能(の一部)を引き継いでいる。そして、プリミティブを「どのエンジンから継承したか」により複数のカテゴリに分けて“管理”し…

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

TeX

…-01)の更新では、LuaTeX 拡張機能についてのサポートがカーネルに入った。LuaTeX の拡張機能のサポートは従来は luatexbase というパッケージが行っていたが、カーネルのコードはこれを元にして実装されているようである。(ただしインタフェースは全く同一ではない。) 新しいカーネルと同時に新しい版の luatexbase もリリースされていて、そこでは新しいカーネルの機能を用いて従来の luatexbase のインタフェースを実装している(つまり互換レイヤーを成…

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

TeX

…var i=0;i LuaTeX が変わった話 [2017-01-13 追記] 以下に書いてあるのは 0.79→0.81 の間に行われた変更点の話である。LuaTeX ではこの後、0.81→0.85 の間でも大規模なプリミティブの体系の変更が行われている。従って、以下の情報は、現状の LuaTeX についてはほとんど参考にならないだろう。 2015-10-07 リリースの 0.81.0 でプリミティブの大幅な整理が行われた。 複数の名前(エイリアス)をもつプリミティブ*1につ…

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

…ram_name("luatex") end) if kpse then -- texlua である end もっと確実にするには、status.luatex_version が定義済かを見る、とか。(“最初から定義されないかも”に対応する方法は先と同じ。)if status and status.luatex_version then -- texlua である end Kpathsea したい TeX に関するユーティリティを texlua で実装する場合は Kpaths…

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

LuaTeX は「Lua できる TeX エンジン」でありその入力は普通は TeX 文書である。しかし、実は LuaTeX は Lua インタプリタとしても使用できる。 LuaTeX で Lua(だけ)してみる 例えば、次のような Lua ソースファイルを用意する。 [hello.lua]print("Hello Lua world!") LuaTeX がインストールされた環境で、この hello.lua があるディレクトリにおいて、次のコマンドを実行する。 [コマンド]te…

cmap から CMap を作る話

…「texlua」は LuaTeX エンジンを Lua インタプリタとして使う場合のコマンド名。*1詳細は別の記事を参照。 これで適当な名前*2(この場合は UniSourceHanSansMedium-UTF16-H)の CMap ファイルを得られる。別の名前を指定したい場合は -o オプションを指定する。*3texlua zrmakecmap.lua -o UniSourceHanSans-UTF16-H SourceHanSans-Medium.otfこうして得た CMa…

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

TeX

… pdfTeX や LuaTeX などの各種 TeX エンジンを指すのに用いられる語である。これと並列されていることを考慮すると、“post-processors”は何らかのソフトウェアを指していて、しかもドライバオプションの話をしているのだから*1、これが dvips や dvipdfmx などの dvi ドライバを指すことが判る。すると、この文の“drivers”は明らかに dvi ドライバとは別のものを指していることになる。そして少し先を見ると、「extract dri…

XeLaTeX や LuaLaTeX で Unicode できるかできないか(2)

…TeX については LuaTeX-ja を利用して日本語を含む文書(あるいは“日本語の文書”)を作成することも行われ始めている。この場合、和文の方は“Unicode できる”のはよく知られている。では欧文の方はどうだろうか? XeLaTeX + zxjatype の場合 まずは XeLaTeX + zxjatype を試してみよう。 % XeLaTeX 文書, 文字コードは UTF-8 \documentclass[a4paper]{article} \usepackage{…

bxcjkjatype の autotilde はソレじゃない件(1)

…uaLaTeX + LuaTeX-ja を使った場合も同様に和欧文間空白が自動挿入される。ところが、(pdf)LaTeX + CJK パッケージでは和欧文間空白を自動挿入する機能が存在しない。このため、ソースを (u)pLaTeX と同じように書くと和欧文間空白が入らない状態で出力されてしまう。% pdfLaTeX 文書, 文字コードは UTF-8 \documentclass[a4paper]{article} \usepackage{CJKutf8,CJKspace,CJ…