texjporg / jsclasses

Classes tailored for use with Japanese.
BSD 2-Clause "Simplified" License
60 stars 14 forks source link

#73「autodetect-engine の規定化と platex オプションの追加」の実装 #76

Closed wtsnjp closed 1 year ago

wtsnjp commented 2 years ago

内容はタイトルの通りです.かねてより要望を出していました #73 について,ありがたいことに @t-tk さんからご賛同のコメントをいただいたこと,また @okumuralab さん・@doraTeX さんからも 👍 のリアクションをいただいていることから,そろそろ実現してもよいのかなと思い,実装の叩き台を作ってみました.

概ね当該 issue で自分が提案したような挙動を実現しましたが,細かい部分の挙動については調整が必要な可能性があります.例えば platexuplatex を同時指定した場合(そのような指定は明らかに “不正” だと思いますが)のことは真面目に考慮していません.この実装では最後に指定したもののみが有効になり,それ以外は無視される挙動になるかと思います.しかしグローバルオプションにはすべてが残ることになりそうです.

また autodetect-engine が規定となったところ(今後は必須でないところを敢えて)明示的に platex または uplatex の指定を行い,かつ実際の使用エンジンは不整合である場合に「その旨のエラーを出す」以上の親切な(?)手当を行うべきかは私だけでは判断できていません.ひとまず素朴にエラーを出すだけになっています.この懸念は #40 を踏まえています.

t-tk commented 2 years ago

オプションの重複とエラーの関係について、実装の難易度とかは考えずとりあえずこんなのどうでしょうという案を作ってみました。 叩き台としていただければ。 この案では、オプションの順番は無関係と思っています。 また、この案では、jsarticle と otf などにまたがって重複した場合も同様でいいと考えています。

engine option 挙動
platex --- platex実行。自動選択のメッセージ
uplatex --- uplatex実行。自動選択のメッセージ
platex autodetect-engine platex実行。自動選択のメッセージ
uplatex autodetect-engine uplatex実行。自動選択のメッセージ
platex platex platex実行。メッセージなし
uplatex uplatex uplatex実行。メッセージなし
platex platex, autodetect-engine 重複オプションの警告。platex処理は実行。
uplatex uplatex, autodetect-engine 重複オプションの警告。uplatex処理は実行。
--- platex, uplatex オプション不整合。エラー終了
platex uplatex エンジン不整合。エラー終了
uplatex platex エンジン不整合。エラー終了
t-tk commented 1 year ago

とりあえず、現在の @wtsnjp さんの autodect-engine-by-default ブランチに現在の master をマージしたものを作ってみました。jsclasses.pdf が旧いままです。https://github.com/texjporg/jsclasses/commit/498b7f83b88f8e547787033743cdbdea5feaa908

まとめに入りたいと思います。 現状は次のような仕様になっていると思います。賛同します。

otf.sty もこれに倣おうと思います。

私が、jsclasses.dvi をmakeしようとすると、止まってしまいます。なぜでしょうか。

[79]
! Undefined control sequence.
l.5625 % parhook対応として\cs
                             {par}が追加されていますが,
?
t-tk commented 1 year ago

\cs は、ptex-manual の中だけでもいろいろな定義がなされているようです。どれがいいのでしょうか。

ptex-manual/jtex_asciimw.tex ::
\newcommand{\cs}[1]{{$\backslash$#1}}

ptex-manual/ptexskip_asciimw.tex ::
\newcommand{\cs}[1]{\hskip\xkanjiskip\texttt{\char"5C #1}}

ptex-manual/jtexdoc_asciimw.tex ::
\def\cs#1{$\backslash$\kern0pt#1}
aminophen commented 1 year ago

私が、jsclasses.dvi をmakeしようとすると、止まってしまいます。

すみません,私も確認せずに \cs と書いてしまったかも。単純に |\par| に変えて結構です。

\cs は、ptex-manual の中だけでもいろいろな定義がなされているようです。

_asciimw が付いている物はアスキー時代から極力変更しないつもりなので,その中のバラバラの定義もアスキーによるものですがそのままにしておきたいです。

t-tk commented 1 year ago

単純に |\par| に変えて

この方針で書き直しました 。 合わせて、マニュアルの autodetect-engine 周りの記述を追加とパッケージの版数を 2023/02/12 としました。 jis/* も make jisfile で作ってみました。 jsclasses を触るのは初めてなのでおかしなことをしているかもしれません。何かあればご指摘お願いします。 特になければ 2/12 にCTANへ投稿します。