Hatena::ブログ(Diary)

アセトアミノフェンの気ままな日常

2016-05-20

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

前回の続きということで。

古い W32TeX のダウンロード

数か月前程度のものなら兼宗さんのところに残っている場合があるのは、割と知られている(W32TeX - TeX Wiki にも記述あり)。

それよりちょっと古い 2013 年末のものが KTUG にある。同じ KTUG にはさらに古い 2008 年のものも残されている。

驚いたのが、dviout/dviprt で有名な大島先生のところ。2003 年の W32TeX がバックアップされている。残念ながら pTeX のバイナリを含む ptex-3.1.2-w32.tar.gz だけが残っていないが、他はそろっているようだ。手元の Windows 7 でもちゃんと動く。

それより古いものは…書籍についている CD-ROM やフロッピーディスクを読めれば入手可能だと思うが、試していない。

余談 (1):W32TeX のインストーラ版

ちなみに、W32TeX は一時期 msi 形式のインストーラを持っていたことがあるらしい。こちらも KTUG のアーカイブに残されている。

これに丸ごと入っているので、これ一つ持っておけばいつでも 2008 年初頭の W32TeX を展開&インストールできて便利。

余談 (2):e-pTeX 電卓?

2008 年の W32TeX というのを挙げたが、この頃は北川さんによる e-pTeX が話題になった直後である。当時の資料*1にも書かれているとおり「浮動小数点演算の実装」パッチがまだ入っていたころである。というわけで

C:\tmp>eptex \fpinit
This is e-pTeX, Version 3.141592-p3.1.10-2.2 (sjis) (Web2C 7.5.6)
entering extended mode
Floating operation initialized.

*\skip300=\real2 \fplog\skip300

*$\log2\simeq\fpfrac\skip300\times10^{\fpexpr\skip300}$\bye
[1]
Output written on texput.dvi (1 page, 440 bytes).
Transcript written on texput.log.

C:\tmp>dvipdfmx texput
texput.dvi -> texput.pdf
[1]
7550 bytes written

となって計算結果がプリントされる(この例は fp.pdf より)。
f:id:acetaminophen:20160523225442p:image
もちろん最近の eptex では

C:\tmp>eptex \fpinit
This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (sjis) (TeX Live 2016/W32TeX)
 (preloaded format=eptex)
 restricted \write18 enabled.
entering extended mode
! Undefined control sequence.
<*> \fpinit

? 

となる。

余談 (3):アレ、restricted \write18 は?

さっきの 余談(2) の e-pTeX の起動時のログを見ると

restricted \write18 enabled.

がない*2。この当時はまだ restricted shell escape という概念が存在せず、-shell-escape と -no-shell-escape の二択だったことを示している。restricted shell escape が導入されたのは TeX Live 2009 なので当然である:

いろいろ見ていると、やはり TeX も生きていることを感じる。

*1:「計算数学II 作業記録」resume.pdf または eptex_resume.pdf を参照。

*2:そういえば、LuaTeX beta-0.85.0 で \write18 が廃止されたのも記憶に新しい。

2016-05-18

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

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

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

古い TeX Live のダウンロード

これは既に munepi さんが書いてくださっている。TeX Live historic には 1996 年以降の TeX Live がアーカイブされているので、ここから取ってくればよい。

ちなみに、日本語 TeX 開発コミュニティのサーバには 2012 年以降の TeX Live + tlptexlive (tltexjp) がアーカイブされている。

こちらは同じく munepixyz さんが注意喚起していた TeX Live 2013 が tlmgr で 2015 pretest まで更新されてしまうコワイ話も起きないので安心*3

ありがたやありがたや…

その前に日本で使われていたのは…

土村さんの ptetexptexlive が、日本の成果物を TeX Live に取り込んでもらう布石となったのは間違いないだろう*4。これはまだソースが残っているので、ビルドすれば…この頃に比べれば今は格段にインストールが楽になったといえるだろう*5

さて、次回に続く

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

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

*3:確かツイートで見かけたなあと思ったら、自分のブログに貼りついていて見つかった;)

*4:その当時はまだ僕は TeX の存在自体知らない高校生とかだったわけだが。

*5:ねっ?>本稿の冒頭の発言へループ

2016-05-09

dvipdfmx で縦組中の横ボックスが異常?

追記 (2016-05-11):不具合を修正するパッチを作っていただき、問題は解消しました。ただし、既に TeX Live 2016 リリースに向けたコードは最終版が確定しているため、修正は TeX Live 2017 以降に反映されます。なお、TeX Live 2015 にも同じバグがあって(私が確認した範囲では)4年以上存在したバグのようで、その期間にわたり報告がなかったことから、実害は少ないと思います。
追記 (2016-05-13):幸か不幸か、LuaTeX に critical なバグが見つかって修正されたついでに、dvipdfmx のバグ修正パッチも TeX Live に取り込んでいただくことができました (r41072) 。結果的に TeX Live 2016 に間に合いました (^^;;

よくわからない現象に遭遇したので、一旦メモ。明日以降、Win32 環境以外で試してみて再現したら報告予定。もしここを偶然読んで再現してしまった方がいらっしゃれば、コメントください。(とはいっても、おそらく今日 5/9 中で TeX Live 2016 code freeze のはずなので、これが仮にバグだったとしたらもう間に合わないね…気づくのが遅かった)

テストケース

次のソースを W32TeX (2016/05/03) で処理する。ただし、platex + dvipdfmx で IPAex フォント埋め込み指定。

% test02.tex
\documentclass{tarticle}
\begin{document}

あいうえお

あ\hbox{\yoko いうえ}\end{document}

出来た PDF を SumatraPDF 3.0 や Adobe Reader XI で表示してみると、ふたつの「お」がなぜか見えない。一方

% test04.tex
\documentclass{tarticle}
\begin{document}

あいうえお

あ\hbox{\yoko いうえ}お

あいうえおかきく

\end{document}

だと正常に見える。また、この症状は

  • IPAex フォント (ttf) や MS フォント (ttc) で異常
  • 小塚フォント (otf) だと正常*1

となり、しかも W32TeX だけでなく TeX Live 2015 (win32) でも同様の結果が得られた*2。さらに、dvips + ps2pdf だと(縦組を gs がうまく扱えないことを度外視すると)予想通りの結果が出てきたので、DVI はおそらく正常なのだろうと見込んでいる。

テストケース一式を一時的にここに置く。 ← リンク削除 (2016-05-13)

OS X 10.7.5 (Lion) で自力ビルドした pTeX + dvipdfmx でも再現した。ちなみに、pLaTeX マクロのせいではないことも確認済み:

\shipout\vbox{\tate\tentmin\hbox{\yoko いうえ}}\bye

これを (plain) pTeX + dvipdfmx で処理してもやはり変な結果になる。

*1:えっと、縦組に詳しくないのでよくわからないんだけど、これが期待される結果だよね?

*2:ほかに TL2012, TL2014 を含む手元のすべての TeX Live / W32TeX 環境で再現している。もしかして結構古いバグなのかな…?

2016-05-02

pxeverysel と ptrace を同時に使う

先日の「tracefnt パッケージと ptrace パッケージ」の考察をさらに進める。pLaTeX で

\documentclass{jsarticle}
% ここでいろいろな組み合わせでパッケージを読み込む
% \usepackage{tracefnt}
% \usepackage{ptrace}
% \usepackage{everysel}
% \usepackage{pxeverysel}
\begin{document}
\TeX はアレ{\sffamily\TeX はアレ{\Large\TeX はアレ}}
\end{document}

を処理して、結果をみる。

まずは別々のテスト

「tracefnt 系」と「everysel 系」を混ぜずに、pLaTeX の挙動をテスト。

  1. tracefnt
    • 不正な出力。
  2. tracefnt → ptrace
    • 正常な出力。
  3. everysel
    • 警告[1](末尾参照)が出て不正な出力。
  4. everysel → pxeverysel
    • 正常な出力。

ここまではすべて想定内の挙動である。

混ぜて使うとどうなるか

さて、ここからは2系統を混ぜて使ってみよう。everysel パッケージは tracefnt パッケージを知っているので、その挙動によってコマンドチェックを変えている。しかも、everysel の実際のフックは \AtBeginDocument まで遅らせてある。これらを考慮すると、読み込み順は「tracefnt 系 → everysel 系」だけテストすればよいだろう。

  1. tracefnt → everysel
    • 警告は出ないが不正な出力。
  2. tracefnt → everysel → pxeverysel
    • 警告は出ないが不正な出力。
  3. tracefnt → ptrace → everysel
    • 警告[1](末尾参照)が出て不正な出力。
  4. tracefnt → ptrace → everysel → pxeverysel
    • 警告[2](末尾参照)が出るが正常な出力。

警告[1]:

LaTeX Warning: Command \selectfont   has changed.
               Check if current package is valid.

警告[2]:

Package pxeverysel Warning: Failed in patching \selectfont.

うーん、もうちょっと pxeverysel に頑張ってほしい。具体的には混合時の 2. と 4. はもう少し対処のしようがある気がする。

まず、2. を 4. 並みに改善するには、単に pxeverysel で「tracefnt.sty が読み込み済みなら、ptrace.sty (pLaTeX) または uptrace.sty (upLaTeX) を追加で読み込む」でよい。さて、4. の状況はどうしたものか… そもそも僕はまだこの警告が出る理由を理解していないのでしばらく保留。 → いじってみた(パッチに使うパターンマッチを変更)。

これで tracefnt.sty / ptrace.sty に対しても pxeverysel が有効になったと思う。

→ さらに、tracefnt 使用時に \font@info が重複して出る現象にも対処 (v0.3) 。

2016-05-01

pLaTeX と共存できていない LaTeX パッケージの備忘録(続編)

先日の記事の続き。pLaTeX で使うとき(特に縦組)でもっといろいろな問題が起きるパッケージがある。いわずとしれた

hyperref パッケージ

である。

hyperref を pLaTeX 縦組で使うと…

他所でも取り上げられてはいるが、たとえばどんなことになるか例示しておこう。

\documentclass[dvipdfmx]{tarticle}
\usepackage{hyperref}
\begin{document}

\tableofcontents % 目次のページ番号が寝てしまう

\section{最初の例}

リンクの例\href{http://acetaminophen.hatenablog.com/}{リンクtest}ほげほげ

\subsection{ほげほげ}

脚注の例\footnote{脚注です。}ほげほげ % 脚注番号の位置が変

\subsection{ふがふが}

相互参照の例\label{target1}ターゲット

\subsection{次の例}

参照\ref{target1}による。

ページ参照\pageref{target1}してみる。 % ページ番号が寝てしまう

\end{document}

f:id:acetaminophen:20160501141155p:image

回避策もいくつか紹介されている。

さらに、footnotebackref パッケージを使うと

footnotebackref パッケージは hyperref の機能を利用してさらに脚注 → 本文への逆ジャンプを可能にする。容易に想像がつくとおり

\usepackage{footnotebackref}

とするだけで、pLaTeX 縦組の脚注番号(脚注側)が寝てしまう。