Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

platex / uplatex の sync の効率化など #56

Closed
aminophen opened this issue Nov 3, 2017 · 4 comments
Closed

platex / uplatex の sync の効率化など #56

aminophen opened this issue Nov 3, 2017 · 4 comments

Comments

@aminophen
Copy link
Member

現状は platex と uplatex のリポジトリが別々で,毎回 plcore.dtx だけのために sync しないといけないのが手間となっています。今後アスキーが pLaTeX を開発再開した場合に元に戻せるのかという懸念はあるかもしれませんが,コミュニティ版としては,次のリリースで

  • plcore.ltx を platex / uplatex 共通のコードだけに制約し,
  • platex.ltx / uplatex.ltx では plcore.ltx および他のフォーマット固有のファイルを \input する

という仕組みに分離したいのですが,よろしいでしょうか。同時に,そのリリースを以って「e-TeX 必須」かつ「ISO 8601 な日付書式の LaTeX2e 2017-04-15 必須」としたいのですがどうでしょう。

@aminophen
Copy link
Member Author

あと,元号が変わった場合の \和暦 もどうするか考えないといけないような。ファイル構成を変更するのであれば,元号だけを定義したパッケージを作って,それを platex / uplatex / jsclasses / bxjscls / ltjsclasses などで共通で利用するというのもあり得るのかもしれません。

@aminophen
Copy link
Member Author

作業メモを兼ねて書いておきます。

  • plcore.ltx を platex / uplatex 共通のコードだけに制約し,
  • platex.ltx / uplatex.ltx では plcore.ltx および他のフォーマット固有のファイルを \input する

本件を進めるにあたり,(u)plcore.ltx をいじってみました。最新のものは common ブランチです。

  • (u)plcore.ltx の中にあった,\everyjob で出すバナーを作るための処理を改良し,\pfmtversion などを展開せずにトークン列に入れることにした。
  • 従来は (u)plcore.ltx の途中でデフォルト設定ファイル (u)pldefs.ltx を読んでいたが,今後は (u)platex.ltx の最後の方で((u)plcore.ltx 全体よりも後に)読み込むようにした。

以上の変更をすると,plcore.ltx と uplcore.ltx の間の差分がほぼなくなり,実質的には

 \def\pfmtversion
-   {2017/12/10}
+   {2017/12/10u01}
+\def\documentstyle{%
+  \@latex@error{upLaTeX does NOT support LaTeX 2.09 compatibility
+    mode.\MessageBreak Use \noexpand\documentclass instead}{%
+    \noexpand\documentstyle is an old convention of LaTeX 2.09,
+    which has been\MessageBreak obsolete since 1995. upLaTeX is
+    first released in 2007, so we do\MessageBreak not provide any
+    emulation of the LaTeX 2.09 author environment.\MessageBreak
+    New documents should use Standard LaTeX conventions, and
+    start\MessageBreak with the \noexpand\documentclass command.}%
+  \documentclass}

だけになりました。こうなると uplcore.ltx はもはや以下のコードと等価と言えるはずです:

\input plcore.ltx
\edef\pfmtversion{\pfmtversion u01}
\def\documentstyle{…略…}

こうすれば platex → uplatex のカーネルの sync が必要なくなり,手間が省けるだけでなく作業ミスを減らせます!(もちろん jclasses → ujclasses は今後も sync を続ける。)あとは

  • (u)pldefs.ltx の読み込みを遅らせたことで問題が起きないかを確認する
  • 安全のため \input plcore.ltx のための必要条件を \pfmtversion で判定するコードを書く

の2点だけで良いはずですが,「uplatex は独立な方がいい」とか他の意見があれば早めにお願いします。

@aminophen
Copy link
Member Author

aminophen commented Mar 9, 2018

2018/03/09 付けで完了とします。e-TeX 必須にする処理や LaTeX 2017-04-15 以降必須とする処理は含んでいませんが,追って必要な時にやります。

@aminophen
Copy link
Member Author

b14ba7e を以って,LaTeX2e 2017-04-15 以降必須にしました。これで latex.ltx に従い自動的に e-TeX 必須となります。(2017-04-15 必須とすることで,例えば \document@default@language を provide したりするコードを削除することができた。)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant