次のような plain TeX ファイルを用意してタブ文字を foo.out
に書き込もうとすると,pdfTeX と LuaTeX では意図通りタブ文字が書き込まれる一方で,(e)-(u)pTeX では 2 行とも ^^I
が書き込まれます(XeTeX と Knuthian TeX も同様です).
\newwrite\tmp
\immediate\openout\tmp=foo.out
\begingroup
\catcode`\^^I=12 % ASCII TAB
\immediate\write\tmp{^^I}
\immediate\write\tmp{ } % ブレース内はタブ文字をベタ書き
\endgroup
\immediate\closeout\tmp
\bye
TeX.SX のこの回答によると,TCX ファイルというものによって左右されるそうで,TUG の Web サイトに従って %& -translate-file=cp227.tcx
をファイル冒頭に加えると,ログを見る限りは
This is pTeX, Version 3.14159265-p3.7.1 (utf8.euc) (TeX Live 2017) (preloaded format=ptex 2017.11.17) 25 NOV 2017 10:09
restricted \write18 enabled.
%&-line parsing enabled.
(/usr/local/texlive/2017/texmf-dist/web2c/cp227.tcx)
**mwe.tex
(./mwe.tex
\tmp=\write0
\openout0 = `foo.out'.
)
No pages of output.
と cp227.tcx
が読み込まれていそうなのですが,foo.out
には依然 ^^I
が書き込まれています.一方で cp227.tcx
を使用したフォーマットを作成して利用すると,タブ文字が書き込まれます.
XeTeX で同様のことをすると (WARNING: translate-file "cp227.tcx" ignored)
と警告が出て,Knuthian TeX ではそもそも %&-line parsing enabled.
になりませんでした.TUG の Web サイトに記載されていた方法がいずれのエンジンでも機能しないのですが,すくなくとも (e)-(u)pTeX においてはどのようにすれば TCX ファイルの指定ができるのでしょうか?この件で TCX ファイルというものをはじめて知ったこともありほとんど何も知らないので,「そもそも (e)-(u)pTeX で cp227.tcx
を読み込むのは危険だ」などということがあれば,あわせてご教授いただければ幸いです.
なお,OS X EL Capitan 上で TeX Live 2017 を使用しています.
何故このようなことをしているのかが見えづらいと思うので簡単に理由を述べますと,TikZ パッケージの external
ライブラリが提供する Makefile 生成機能を upLaTeX においても利用可能にしたいのがそもそもの動機です.