\pdfshellescape, \lastnodechar の実装

\pdfshellescape, \lastnodechar の実装

- 北川 弘典 の投稿
返信数: 9
TeX Live r35495 をベースに,e-[u]pTeX に
pdfTeX の \pdfshellescape を実装してみました.

また,仕様を満足に詰めていませんが,実験的なものとして
・\lastnodechar: 「直前の文字」の内部コードを返す.
 \lastnodetype で調べられるノードを n としたとき
 ・n が char_node のとき,その内部コードの値を返す.
 ・n が禁則由来のペナルティのとき,
  「最後の和文文字」last_jchr の内部コードの値を返す.
 ・n が JFM 由来のグルーの時も同じ.
 ・それ以外の場合は,-1 を返す.
を追加してみました.

フォント由来のカーニングについては未対応なので,
また近いうちに更新するつもりです.
北川 弘典 への返信

Re: \pdfshellescape, \lastnodechar の実装

- Akira Kakuto の投稿
r35541 として代理コミットしておきました。
ありがとうございます。
Akira Kakuto への返信

Re: \pdfshellescape, \lastnodechar の実装

- 北川 弘典 の投稿
> r35541 として代理コミットしておきました。
こちらこそ,ありがとうございます.

さて,
> フォント由来のカーニングについては未対応
と書きましたが,早速更新しました.
添付した zip の中の lnctest.tex がサンプルになっています.
北川 弘典 への返信

Re: \pdfshellescape, \lastnodechar の実装

- Akira Kakuto の投稿
> lnctest.tex がサンプルになっています

build してテストして見ると,ソースに提示してある通り
の値が出ました。

北川 弘典 への返信

Re: \pdfshellescape, \lastnodechar の実装

- Dora TeX の投稿
北川様

TeXユーザの集いではお世話になりました。
集いでお願いしたことが直ちに実装され,そのあまりの速さに驚くとともに,大変感激いたしております。

さて,当方でも早速新しい e-(u)pTeX を試してみました。
当方の環境では,次のソースを platex でコンパイルすると,
Segmentation fault: 11
でクラッシュしてしまいましたので,ご報告しておきます。

\documentclass{article}
\begin{document}
${}\the\lastnodechar$
\end{document}
Dora TeX への返信

Re: \pdfshellescape, \lastnodechar の実装

- 北川 弘典 の投稿
報告ありがとうございます.再現しました.

TeX Live r35611 に対するパッチを作ってみました.
私の手元では動いているようです.

---
さて,欧文リガチャに対する \lastnodechar の返り値についてですが,
 A. リガチャのグリフの番号を返す
 B. リガチャをなす最後の構成要素の文字コードを返す
という 2 つの選択肢があります.例えば,通常の cmr10 フォントで
  ffi\the\lastnodechar
と打った時,A. の方針だと 14,B. の方針だと``i''の文字コード 105
が出力されることになります.

11/09 以前では A. の方針を取ってきましたが,
今回のパッチでは B. の方針に変えています.リガチャ周囲の
\xkanjiskip の挿入判定もその最初・最後の構成要素を用いて行っている
のに合わせた形ですが,どうでしょう?

北川 弘典 への返信

Re: \pdfshellescape, \lastnodechar の実装

- Dora TeX の投稿
北川様

早速のご対応,ありがとうございます。
こちらの手元でも件のソースが正しくコンパイルされました。

欧文リガチャに対する挙動は,\xkanjiskip の挿入判定に沿った B.の方針が都合がよいと思います。ありがとうございます。

ところで,また Segmentation fault で落ちる現象を確認しましたので,ご報告いたします。
(今度は再現性が100%ではないので,私の環境依存なのかもしれず,あまり自信がないのですが,念のため。)

次のソースを uplatex でコンパイルすると,(必ずというわけではないのですが)数回に1回の頻度で Segmentation fault を起こします。

\documentclass[uplatex]{jsarticle}

\newcount\num
\loop
\AtBeginDvi{\special{pdf:mapline uphminr-h UniJIS-UTF16-H KozMinPr6N-Regular.otf}}
\advance\num1
\ifnum\num<200\repeat

\begin{document}



\newpage

あ\the\lastnodechar

\end{document}
Dora TeX への返信

Re: \pdfshellescape, \lastnodechar の実装

- 北川 弘典 の投稿
MALLOC_PERTURB_=68 下で再現しました.また初期化し忘れかな.
e-pTeX のページにチケット
  https://sourceforge.jp/ticket/browse.php?group_id=3437&tid=34620
を作ったので,今後はそちらで書いていきます.