• Showing Page History #103166

e-pTeX についての wiki

元々 http://www.ms.u-tokyo.ac.jp/~kitagawa/(リンク切れ) で公開していたものであるが,諸事情によってこの sourceforge.jp osdn.jp(サイト名称変更)内の wiki に一本化した.

概要

現在の pTeX は,TeX の持っていたレジスタ 256 個という制限を未だに引きずっている.その一方,欧文の世界では,TeX Live ですでに e-TeX 機能が取り込まれた pdfTeX が標準となり,32768 個のレジスタを利用できるようになっている.

この状況を受け,僕は東京大学理学部数学科 3 年対象の授業「計算数学II」( http://ks.ms.u-tokyo.ac.jp/ ) 内の project として pTeX に e-TeX 機能を取り込むということを行った.skip レジスタを使用した 10 進 21 桁の浮動小数点演算も暇だったので新たに書き起こした(注:浮動小数点演算の機能はしばらく前から取り外されています).これが本プロジェクトの e-pTeX である.

なお,2007/12/30 に角藤さんから同様の peTeX が発表された(qa:50527 以降)が,本プログラムはそれとは独立に実装したものである(残念ながら peTeX は廃棄されたようである(qa:50551)).

ライセンスについては,最初はあまり深く考えていなかったが, qa:50654 を契機に定めることにした. ( pTeX や奥村さんの jsclasses が採用している)modified BSD を使うのが適当だと思ったので,そのようにした.

最近は,LuaTeX-ja プロジェクトの方を中心に取り組んでいます.

TeX Live 2014 の情報

TeX Live 2011 以降や,W32TeX では,pTeX をインストールすると,e-pTeX も導入されるようになっています. そのため,本ページでは,今後(1年に1回リリースされる)TeX Live に対する修正の情報を載せるという形になります.

TeX Live 2014 の e-pTeX で利用できる pdfTeX のプリミティブは以下のとおりです.

  • \pdfstrcmp: 文字列の比較.和文文字は UTF-8 バイト列に直して比較しています.
  • \pdffilemoddate, \pdfcreationdate, \pdffilesize: standalone パッケージを使う場合に必要. TeX フォーラム中の pLaTeX と standalone パッケージ(TikZとTexLive2012使用時) が発端.
  • \pdfsavepos, \pdfpage{width,height} , \pdflast{x,y}pos: 出力結果 (dvi) における絶対値の取得.
  • \pdffiledump: ファイルの中身を 16 進でダンプ.bmpsize パッケージ等で使われる.(角藤さん,実装ありがとうございます)

TeX Live 2015 の情報

TeX Live 2015 の e-pTeX では,上記に加えて以下の 2 プリミティブが使用可能です.

  • \pdfshellescape: pdfTeX の同名のプリミティブ.1: \write18 有効, 2: restricted \write18, 0: \write18 無効.
  • \lastnodechar: 直前のノードが文字(欧文のリガチャも含む)の場合,その文字コードを出力します.

上記 2 プリミティブについては TeX Live SVN r35615, r35619 としてコミットされました.角藤さん,ありがとうございます.

また,現在 (2015/07/02),

  • \pdfmdfivesum: pdfTeX の同名のプリミティブ.\pdfmdfivesum{...} で引数の MD5 sum を, \pdfmdfivesum file {<filename>} でファイル <filename> の中身の MD5 sum を計算.

の実装を予定しています.これは XeTeX のメーリングリストの投稿以降の議論を元に, 角藤さんからリクエストのあったものです.

その他の情報

  • 以前の版は,旧版のページからたどれます.
  • 文書類:
    • resume.pdf:2008/1/31 までの「計算数学II」での作業記録であり, eptex-100131.tar.bz2 中にも入っている.内輪ネタも入っているが,その一方で,実装方法とかの若干詳しい情報も書いてある.
    • 以前のページに載せていた WEB のサンプルはこちら:WEB のサンプル

コメント

長くなってきたので,2010/9/27 以前のコメントは過去コメントの前半部に移しました.

コメントは下のボックスに遠慮なくお書きください. また,バグ報告・機能リクエストなどはこちらへどうぞ(コメント欄だと管理しきれなくなる).

:
  • pTeX-ng のページを見ていたら,e-pTeX では \fontcharwd 等の日本語対応をサボっていたことに気づきました.近日中に直します.
    -- h7k (2014-12-10 12:28:18 JST)
  • pTeXの\inhibitglueのバグを修正するパッチ(ptex-3.1.11-inhibit_glue_flag-091107-1.patch)は,eptex-110315と両立可能でしょうか?
    -- 通りすがり (2011-03-16 09:58:50 JST)
    • 今から試しますが,あのパッチ自体がきちんとしたパッチではないです(そのためリンクも外していました).
      -- h7k (2011-03-16 11:13 JST)
    • 次のようにすれば適用できるようです.\inhibitglue 問題は,もう一回きちんと考えないといけませんね. (2011-03-16 11:46 JST)
      (in: /opt/home-supp/tl10)
      $ scripts/unpack.sh -p -e -r ; scripts/build.sh -p -e -r
      $ pushd /tmp/texlive-20100720-source/texk/web2c/ptexdir/
      $ patch -p0 < /tmp/ptex-3.1.11-inhibit_glue_flag-0911107-1.patch 
      $ cd ../eptexdir
      $ rm ptex-base.ch
      $ ln -s eptex-base.ch ptex-base.ch
      $ patch -p0 < /tmp/ptex-3.1.11-inhibit_glue_flag-0991107-1.patch 
      $ cd ../../../Work/texk/web2c/
      $ make ptex eptex
      $ cp ptex ../../../inst/bin/x86_64-unknown-linux-gnu 
      $ cp eptex ../../../inst/bin/x86_64-unknown-linux-gnu
      $ popd
      (scripts/texmf.sh -p -e -r 以降を実行)
      
  • eptex-101231, scripts/unpack.sh l.6 の /tmpは,$TMPDIRの間違いです.
    -- h7k (2011-01-02 15:34:54 JST)
  • eptex-101231 のインストールに用いる utfsrc.zip は,例えば ptexlive-20100711 に同梱されています.
    -- h7k (2011-01-02 08:54:47 JST)
  • TeX Live 2010 への対応ですが,一応スクリプト類は作ってあります.しかし,upTeX 部分のパッチも勝手に再構成してしまったので,公開はまだまだ.
    -- h7k (2010-09-28 13:09:55 JST)