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

[ptex] reading \kansujichar #93

Closed
aminophen opened this issue Oct 14, 2019 · 12 comments
Closed

[ptex] reading \kansujichar #93

aminophen opened this issue Oct 14, 2019 · 12 comments

Comments

@aminophen
Copy link
Member

\kansujichar は代入できるのに取得はできない,という挙動が気になっています。「いったん \kansuji で文字を出してそのコードを取得」ならできるのですが,なんだか不便です。

\kansujichar1=46042
\showthe\kansujichar1
% => ! You can't use `\kansujichar' after \the.

\count200=\kansujichar1
% => ! You can't use `\kansujichar' after \the.

\count201=\expandafter`\kansuji1
\showthe\count201 % => 46042.

\end

texjporg/ptex-manual#6 の英語版ドキュメントには,各プリミティブの具体的機能は書かずに,そのシンタックス (expandable, read-only integer, etc.) を書こうと思っているのですが,\kansujichar は assignment-only で本当にいいんだろうかというのが気になりました。

@zr-tex8r
Copy link

自分の考えとしては

  • 数値パラメタなのに読みだせないのは直観に反する
  • なので、実装が難しくないなら、読み出せるように改修したほうがよい
  • ただしマニュアルで「読出は新しい機能である」旨の注意をしておくべき。

ですね。

@h-kitagawa
Copy link
Member

いったん \kansuji で文字を出してそのコードを取得

単純にこういう使い方を想定していただけなのかなあ,という気がします.\kansujichar だけ取得不能としておく理由はないと思います.

aminophen added a commit that referenced this issue Oct 14, 2019
@aminophen
Copy link
Member Author

コメントありがとうございます。実装自体はなんとかなりそう? → f38d636

@h-kitagawa
Copy link
Member

コメントありがとうございます。実装自体はなんとかなりそう? → f38d636

これで動いているようです,ありがとうございます.

@aminophen
Copy link
Member Author

\count123=\kansujichar45 とした場合に ! Invalid KANSUJI number (45). となりますが,その後のリカバーはどうしましょうか? 今は \count123=45 と同義になる実装ですが,この場合 cur_val は捨てるべきな気もします。

@h-kitagawa
Copy link
Member

不正な引数が来たときに "I'm skipping this control sequences." というメッセージを出して単に無視するのは \kansujichar 特有のような気がしています.全部調べたわけではありませんが,他の命令では "I changed this one to zero." と引数を 0 に読み替えるのが一般的?

@aminophen
Copy link
Member Author

たしかに "I changed this one to zero." と読み替える(= \kansujichar0 を返す)というリカバーは他の TeX82 命令を見ると一般的で良さげですが,一方いままでの pTeX は代入時の不正な引数を "I'm skipping this control sequences." で読み飛ばしていた(= \kansujichar0 への代入は起こらない)ので,それとの整合性が取れないように感じています。

@aminophen
Copy link
Member Author

今の自分の感覚としては,「値=不正な引数」あるいは「値=\kansujichar0」よりは,「値=0」あるいは「値=-1」にしたい気分です。他のプリミティブでそのような値をリカバーする例はないか探し中…。

@h-kitagawa
Copy link
Member

いままでの pTeX は代入時の不正な引数を "I'm skipping this control sequences." で読み飛ばしていた

なるほど,確かに,取得時に \kansujichar0 を返すようにするのはかえって不統一ですね.あまり意見はないのですが,\kansujichar45=... という不正な引数で代入操作を読み飛ばすのなら,今の 「\count123=\kansujichar45\count123=45 と同義」というのも \kansujichar という変換操作を読み飛ばすという意味ではそんなに不自然ではないのかも.

@aminophen
Copy link
Member Author

\kansujichar という変換操作を読み飛ばすという意味ではそんなに不自然ではないのかも

私もそんなに不自然ではない気がしてきたので,このまま行こうと思います。エラーリカバリを利用して何かする訳でもないですし,! Missing number を避けるにはこれで十分なので。

\kansujichar の取得は新機能とも言えるので,問題なければ \synctex の件と合わせて pTeX のリビジョンを1だけ増やして夜にコミットしようと思います。

@aminophen
Copy link
Member Author

pTeX p3.8.2 → p3.8.3 に上げて r52389 でコミットしました。

aminophen added a commit to texjporg/ptex-manual that referenced this issue Oct 15, 2019
@aminophen
Copy link
Member Author

ただしマニュアルで「読出は新しい機能である」旨の注意をしておくべき。

texjporg/ptex-manual@9953f67 で注意書きを追加しました。

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

3 participants