Acetaminophen’s diary

化学に関すること,TeXに関すること,ゆきだるまに関すること。

古い TeX をインストールする (W32TeX, TeX Live)

この記事は、サブブログの 2016-05-18~2016-05-20 投稿記事を移転してきたものです。

最新版の TeX ディストリビューションをインストールするのは、方法さえ間違わなければ割と簡単である*1。ところが、ディストリビューションは日々更新されていて、サーバ上で次々に上書きされる*2ので、一昔前のバージョンを入手するのは意外に困難である。年を経るにつれて古い情報も埋もれていき(もちろん新しい情報が増えていくので好ましい!)、ふとした拍子に「いつ何が変わったのか」を確認したくなっても参照先が見つけられないことがよくある。

今回は備忘録も兼ねて、古い TeX ディストリビューションを入手できるサーバのうち僕が使ったことのあるもの(今でも生きているところ)を貼っておく。

 

*1:ここではそういうことにしておこう;-)

*2:現に W32TeX は角藤さんのご尽力でバイナリもパッケージもほぼ毎日更新されているし、TeX Live も年に一度(4-6月)のメンテナンス期を除いてパッケージが毎日更新され、メンテナンス期にはバイナリが rebuild される。

続きを読む

TeX Live 2016 の新しい LuaTeX あれこれ

【最終更新 2016/06/11 16:28】luatex85 パッケージの注意点として挙げていた件について “失敗する実例” の情報をいただいたので追記、冒頭の LuaTeX に対する意見を追加。

【記事公開 2016/04/23 14:19】W32TeX の LuaTeX が新しいものに置き換わったようなので、ひとまず公開します。まだ対処法は流動的ですが、現時点で有効そうなものを書いてあります。

久々の更新。今回は、既にあちこちで噂されているように相当新しくなった LuaTeX について説明します。まず LuaTeX の変更点を概説してから(ここまでは“カジュアルな LaTeX ユーザ”は難しければ読み飛ばしてもよいです)、次に LuaLaTeX を使ううえでつまずきそうな点の対処法をいくつか紹介します。

説明に入る前に:LuaTeX はいいぞ?

巷では「LuaTeX はいいぞ」という言及をよくみかけます。しかし、本当にそうなのでしょうか? たしかに LuaTeX は強いと私は思いますが、自分の目的に合っていないと思うときには (u)pLaTeX + dvipdfmx などの方法を使っています。

あなたにとって LuaTeX (LuaLaTeX, LuaTeX-ja) とはなんですか?

これに対する明確な答えがあるなら、ぜひとも LuaTeX を使いましょう。もし「ただなんとなく」「新しそうだから」「人が LuaTeX はいいぞと言っているから」という消極的な理由なら、いま一度「LuaTeX 使用によって起きるトラブルに自分で立ち向かう覚悟はあるか」と天秤にかけてみるとよいかもしれません*1LuaTeX はついに 2016 年中に Ver. 1.0 をリリースする予定であることが公表されていて、ここでようやくベータ版を脱却して “まともに使える正式版” となることが期待されます。LuaTeX のメリットを正当に評価してうまく活用したいものです。

【誤解を防ぐために】上の主張は「○○というツールは〜に使うべきだ」を意図したものではありませんし、開発者の意見を代弁するものでもありません。ツールをどのように使うかは、使う人の完全な自由です。開発者が想定していない使いかたであっても、それが使う人にとって望むものだったなら、誰にも止める権利はありません。ただ、使うのであればその長所も短所も素直に受け入れることが、使う人にとっても作った人にとっても幸せだと私は思います。特にそのツールを無料で使わせてもらっている場合にはなおさら、作者への感謝(可能ならば改善案などのフィードバック)を忘れてはいけません。

【さらに注意】上記は「自分で好きなエンジンを選択して文章を書いてよい」という場合の話です。ソースを複数人でやりとりする場合にはもうひとつの観点が必要です。

本記事にあるとおり、LuaTeX や周辺パッケージはどんどん仕様が変わっています。したがって、手元ではコンパイルできても相手方ではコンパイルできない(あるいはレイアウトが変わる)ということが往々にしてあります。また、論文投稿規定自体に「pLaTeX で書いてください」「LuaTeX はダメです」のようにエンジンがはっきり指定されていることはまずないでしょう。しかし、特に日本語の場合には「配布されているクラスファイルがそもそも pLaTeX しか想定していない → 事実上 pLaTeX 以外ダメ」というケースがほとんどです。このような場合には、事前に関係者と相談して環境を統一しておくとトラブルを未然に防げることもあります。くれぐれも締切間近になって初めて問題点に気づくということのないように注意しましょう。

 

目次(タイトルだけでも参考になるかもしれません)

 

TeX Live 2016 の LuaTeX の新しいところ

とにかく、いろいろ変わりました。とはいっても、当面の間はカジュアルな LaTeX ユーザが喜びそうなのは「OS X を El Capitan にアップグレードしてヒラギノフォントが LuaTeX で使えなくなってしまった」という人くらいでしょうか…

*1:参考までに、私が「LuaTeX は強い」と思う理由を挙げておきます:

  • Unicode 対応
    • upLaTeX も Unicode 化されているけれど LuaLaTeX のほうが完全(数式フォントなども Unicode 化できるので文字情報が正しくなる)。
  • 好きなフォント(欧文・和文、等幅・プロポーショナル問わず)を使える
    • Lua モジュールで OpenType / TrueType フォントを毎回その場で読み込む能力があるので、pTeX のように面倒な TFM (TeX Font Metric) をいちいち準備しなくて済む。
    • ただし、その裏替えしとして LuaTeX は処理は遅い。変則的なメトリクスのフォントでなければ pLaTeX の pxchfon パッケージで十分通用する。
  • デフォルトで使える数式フォントの種類が多い
    • 最近の (u)pLaTeX は e-(u)pTeX で動いていて、FAM256 拡張されているので、頑張れば数式フォントの種類を増やせる。
    • ただし、LuaTeX に対しては LaTeX がデフォルトで数式フォントを多数使えるようにサポートしているので、難しいコードが不要。
  • PDF 直接出力、組み込み MetaPost サポートが充実
    • TikZ はほとんどの機能が dvipdfmx でも使えるが、若干 pdfTeX/LuaTeX のほうが多い(個人的にはそんなに気にならない程度)。
    • ただし本記事で述べているとおり LuaTeX が仕様変更したことで、pdfTeX 向け TikZ モジュールが若干 LuaTeX で動きづらくなった。
  • Lua コードをゴリゴリ書いて計算・多機能化できる
    • パッケージが Lua で書かれている例も最近は増えてきた。

これらのことから、現在私が LuaTeX を使うのは事実上「プロポーショナルフォントを使いたいとき」「Lua コードでゴリゴリ書かれたパッケージを使いたいとき」に限られています。

続きを読む

ptexenc のアレ?を試してみる

この記事は、サブブログの 2016-02-17 投稿記事を移転してきたものです。

あべのりさんのを実験。ここでは e-pTeX ではなく pTeX を使ってみた。

file-0.tex

\newcount\filenum
\filenum0
(\the\filenum)
\advance\filenum1

\input file-\the\filenum.tex
\bye

file-1.tex

(\the\filenum)
\advance\filenum1

\input file-\the\filenum.tex
\bye

file-50.tex

(\the\filenum)
\advance\filenum1

\bye

copyfiles.sh

#/bin/sh
for i in {2..49}
do
  cp file-1.tex file-$i.tex
done

そして ./copyfiles.sh を実行して file-1.tex を file-2.tex から file-49.tex としてコピーを作成。これで、file-0.texコンパイルすると file-1.tex から file-50.tex までが読み込まれる。期待される結果は「(0) から (50) までの数字が DVI に並ぶ」。

W32TeX [2012/11/04]

> set max_in_open=99
> ptex file-0
This is pTeX, Version 3.1415926-p3.3 (sjis) (TeX Live 2012/W32TeX)
 restricted \write18 enabled.
(./file-0.tex (./file-1.tex (./file-2.tex (./file-3.tex (./file-4.tex
(./file-5.tex (./file-6.tex (./file-7.tex (./file-8.tex (./file-9.tex
(./file-10.tex (./file-11.tex (./file-12.tex (./file-13.tex (./file-14.tex
(./file-15.tex (./file-16.tex (./file-17.tex (./file-18.tex (./file-19.tex
(./file-20.tex (./file-21.tex (./file-22.tex (./file-23.tex (./file-24.tex
(./file-25.tex (./file-26.tex
! TeX capacity exceeded, sorry [main memory size=3000000].
l.374194 ^^@^^@^^@(\the\filenum)
                                
If you really absolutely need more capacity,
you can ask a wizard to enlarge me.

No pages of output.

27個目のファイルを読もうとして main memory size を超過。よくみると…えっ、l.374194? そんなに行はないはずなのだが…

W32TeX [2014/11/08]

> set max_in_open=99
> ptex file-0
This is pTeX, Version 3.14159265-p3.5 (sjis) (TeX Live 2014/W32TeX)
 restricted \write18 enabled.
(./file-0.tex (./file-1.tex (./file-2.tex (./file-3.tex (./file-4.tex
(./file-5.tex (./file-6.tex (./file-7.tex (./file-8.tex (./file-9.tex
(./file-10.tex (./file-11.tex (./file-12.tex (./file-13.tex (./file-14.tex
(./file-15.tex (./file-16.tex (./file-17.tex (./file-18.tex (./file-19.tex
(./file-20.tex

固まった。Ctrl + C でも止まらず、タスクマネージャで kill した。

TeX Live 2012 (Cygwin)

$ export max_in_open=99
$ ptex file-0
This is pTeX, Version 3.1415926-p3.3 (utf8.euc) (TeX Live 2012)
 restricted \write18 enabled.
(./file-0.tex (./file-1.tex (./file-2.tex (./file-3.tex (./file-4.tex
(./file-5.tex (./file-6.tex (./file-7.tex (./file-8.tex (./file-9.tex
(./file-10.tex (./file-11.tex (./file-12.tex (./file-13.tex (./file-14.tex
(./file-15.tex (./file-16.tex (./file-17.tex (./file-18.tex (./file-19.tex
(./file-20.tex (./file-21.tex (./file-22.tex (./file-23.tex (./file-24.tex
(./file-25.tex (./file-26.tex (./file-27.tex (./file-28.tex (./file-29.tex
(./file-30.tex (./file-31.tex (./file-32.tex (./file-33.tex (./file-34.tex
(./file-35.tex (./file-36.tex (./file-37.tex (./file-38.tex (./file-39.tex
(./file-40.tex (./file-41.tex (./file-42.tex (./file-43.tex (./file-44.tex
(./file-45.tex (./file-46.tex (./file-47.tex (./file-48.tex (./file-49.tex
(./file-50.tex [1] ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
Output written on file-0.dvi (1 page, 756 bytes).
Transcript written on file-0.log.

正常終了。出力も期待どおり。

TeX Live 2015 (OS X)

$ export max_in_open=99
$ ptex file-0
This is pTeX, Version 3.14159265-p3.6 (utf8.euc) (TeX Live 2015)
 restricted \write18 enabled.
(./file-0.tex (./file-1.tex (./file-2.tex (./file-3.tex (./file-4.tex
(./file-5.tex (./file-6.tex (./file-7.tex (./file-8.tex (./file-9.tex
(./file-10.tex (./file-11.tex (./file-12.tex (./file-13.tex (./file-14.tex
(./file-15.tex (./file-16.tex (./file-17.tex (./file-18.tex (./file-19.tex
(./file-20.tex (./file-21.tex (./file-22.tex (./file-23.tex (./file-24.tex
(./file-25.tex (./file-26.tex (./file-27.tex (./file-28.tex (./file-29.tex
(./file-30.tex (./file-31.tex (./file-32.tex (./file-33.tex (./file-34.tex
(./file-35.tex (./file-36.tex (./file-37.tex (./file-38.tex (./file-39.tex
(./file-40.tex (./file-41.tex (./file-42.tex (./file-43.tex (./file-44.tex
(./file-45.tex (./file-46.tex (./file-47.tex (./file-48.tex (./file-49.tex
(./file-50.tex [1] ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
Output written on file-0.dvi (1 page, 756 bytes).
Transcript written on file-0.log.

正常終了。出力も期待どおり。

あべのりさんのところで「(20)の前と最後にΛがふたつ並んでいる」というのは Computer Modern でいくと End Of Text (^C) の制御コードにあたる。MinGW でビルドしたもので起きたそうなので、ビルドしてみるか…

追記 (2016-03-01):TeX Live r39901 でとりあえず OPEN_MAX = 132 に設定する応急処置が入ったので、この問題は(見かけ上?)起こらなくなった。

游フォントがとにかくややこしい話

この記事は、サブブログの 2016-02-15 投稿記事を移転してきたものです。

WindowsOS X も、最近は標準で「游フォント」がついてくるようになった。しかし、とにかくいろんな名前があってヤヤコシイ。

 

続きを読む

TeX でゆきだるまを“もっともっと”たくさん

これは TeX & LaTeX Advent Calendar 2015 の13日目の記事です。昨日は MNukazawa さんでした。明日は kuroky_plus さんです。

TeXLaTeX Advent Calendar 2015 もちょうど折り返し地点です。今年のテーマは「今さら人に聞けない、TeXのキホン」というわけで、今日は「“TeX でゆきだるま”のキホン」です。

次のような文を書きたいとします:

私の名前は「黒☃大輔」です。

たとえば、upLaTeX を使うと次のようになるでしょう(pLaTeX の場合は☃の代わりに otf パッケージを使って \ajSnowman とするとよいでしょう):

% upLaTeX 文書
\documentclass[dvipdfmx,uplatex]{jsarticle}
\begin{document}
私の名前は「黒☃大輔」です。
\end{document}

簡単ですね…と思いきや、ここで気になることがあります。

たとえば「IPA明朝」埋め込みで PDF 化すると次のようになります:

f:id:acetaminophen:20151212235316p:plain

しかし、「小塚明朝」や「ヒラギノ明朝」の場合はそれぞれ以下のようになります:

f:id:acetaminophen:20151212235342p:plain

f:id:acetaminophen:20151212235358p:plain

これを「IPA明朝」の場合と比較すると、小塚明朝は帽子がなくなってマフラーを付けていますし、ヒラギノ明朝は雪がなくなってしまいます。これはいわば「大輔」が「太輔」や「犬輔」や「人輔」になってしまったようなもので、一大事です。JIS90 から JIS2004 に変わったときに「フォントのバージョンによって“しんにょう”の点のかずが違う!」と辻さんや渡邊さんは困惑したでしょう。それと同じかさらに深刻な問題に、黒☃さんは常に直面しているわけです*1

ゆきだるまのキホン:フォントによって違うゆきだるまたち(復習)

このような問題が起きるのは、フォントによってゆきだるまの字形が全く異なることが原因です。しかも、歴史的経緯によって事態はより複雑になっています:

  • 初期の Unicode には「ゆきだるま」は "U+2603 SNOWMAN" 一点だった。
  • Unicode 5.2 で日本の ARIB 外字が追加されたことにより "U+26C4 SNOWMAN WITHOUT SNOW" と "U+26C7 BLACK SNOWMAN" が登場。

この時点で、従来のコードポイント "U+2603 SNOWMAN" は突然暗黙に「雪あり白ゆきだるま」になってしまいました*2。結果的に、それ以前にデザインされたフォントの中には、U+2603 に「雪なしゆきだるま」のグリフを割り当てたものが一定数存在します。

これほどの「字形の多様性」があるのは Unicode の膨大な文字のなかでも☃が群を抜いており、これだけで一記事書けるほど興味深いものです。このあたりの事情について良く知らないという読者の方は、以下の記事(調査レポートと参考文献含む)をご一読ください:

しかし、情報を伝えるにあたって「フォントによってマフラーの有無が異なる」というのは不都合でしょう。また逆に、ゆきだるまが Unicode にたった3人しかいないのは不満だという意見もあるでしょう。(ちなみに私は「ゆきだるまが足りない」派で、Unicode に「追加ゆきだるま面 (Additional Snowman Plane)」くらいあってもよいと思っています☃)

この両者の不満を解消すべく、画期的なパッケージを開発しました。

 

*1:えっ、☃なんて人名に使えない? それは心の中でのツッコミにとどめてこの記事を楽しんでください☃⛄⛇

*2:最初に Unicode 1.0 が策定されたときの "U+2603 SNOWMAN" の例示グリフは、モリサワリュウミンIPA明朝とほぼ同じ)でした。そのグリフデザインを踏襲したのでしょう。

続きを読む