-
Notifications
You must be signed in to change notification settings - Fork 18
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
otfパッケージ付属のTFMを使用すると約物周りの組み方が変になる #15
Comments
説明不足だったので追記しますと, |
アキの原因は \xkanjiskip 挿入によるようです。pLaTeX などのデフォルトは \inhibitxspcode`(=2 なのですが,jlreq クラスでは(otf パッケージに関係なく)これが 1 になっているような気がします。試しに 2 に戻してみると, \documentclass{jlreq}
\usepackage{otf}
\begin{document}
\the\inhibitxspcode`(
(f,o.o】\par
\inhibitxspcode`(=2
\the\inhibitxspcode`(
(f,o.o】\par
\end{document} |
私の手元では,
ことからTFM由来のグルーなのかなと思っていましたが,たしかに示していただいたコードで正常になりますね.1の方についてはプリアンブルではなくて本文中で変更したらなぜか効くようになりました(こんな仕組みでしたっけ?). ただ,禁則設定の間違いに起因するのならば |
\documentclass{jlreq}
\usepackage{otf}
\showthe\xkanjiskip
\begin{document}
\showthe\xkanjiskip
こちらはまだ私も理由の説明ができる状態ではありません。 |
とりあえずこの点だけですが,jlreq内でフォントサイズの変更がおこなわれるたびに
|
あれotfも何かしているのか. |
というのが原因のようです. |
(関係ない方だけ答えていますが)再設定するxkanjiskipは |
は間違いでしたね。abenori さんがおっしゃる通りです。 # 先ほどの例示ソースで 2 回目の \showthe が otf の有無によって変わるのは,「 本題の方の「なぜ
が入っていることがわかります。つまり「開き括弧類(jlreq.tfm において TYPE 1 へ分類される文字)の右側に欧文文字 (未分類すなわち TYPE 0 の文字)が来た場合,ゼロ幅の JFM グルーが挿入される」という設定です。pTeX の仕様として,「メトリックグルーが(たとえゼロでも)挿入される箇所では \kanjiskip や \xkanjiskip の自動挿入処理は行わない」というものがあるので, |
luatexja-ja.pdf によると,jaxspmode パラメタについて
とありました。1 と 2 が逆のような振る舞いをするようですから,現状の実装の |
詳細な調査ありがとうございます.じつのところTFMの具体的な中身をまったく知らないのですが何が起きているのかは把握できましたし,教えていただいたことに基づいて LuaTeX-jaの Lines 865 to 866 in b7dba14
\jlreq@setjaxspmode で統一的に扱えそうです.
|
そうですね。ついでにそのあとの |
JFMの方ですが,ある(JLReqの意味での)文字クラスXに対して,前X後ろ19の空きと,前X後ろ27の空き(19は漢字,27は欧文用文字です)が完全に一致する場合には,JRM内でglueを定義しています.そうでない場合には,
という風に思ってJFM自身などを見直してみるといろいろと変です…….直します. |
禁則は関係ないと思うのですが,間違いですか? |
これは厳密に言うと「はい」になります.JLReqの表を実現していないJFMではJLReqの仕様は再現できないので(当たり前だ……) とはいえ今回のはバグとして良いと思いますが. |
\inhibitxspcode は kinsoku.tex で設定されているパラメータだという意味であって,本来の意味での「禁則」の意味では使っていませんでした。pLaTeX 関連の文書では \jcharwidowpenalty などのパラメータも「禁則」と呼ばれるなど,JLreq 等とはずれていることが多いです。 |
JFMを見直してみました( b7dba14 ).jaxspmodeの件も直したので,とりあえず上記の件は解消されていると思います.JFM自身はJLReqの表と何度か見比べただけなので,変な点が残っていたら教えてください. |
最新版を試したところ,(推奨されるかはさておき) |
またサードパーティ製のパッケージ絡みですみません,修正版と \documentclass{jlreq}
\usepackage{cleveref}
\begin{document}
\section{ほげ}\label{sec:hoge}
\end{document} をpLaTeXで処理すると, \relax
\providecommand\zref@newlabel[2]{}
\zref@newlabel{jlreq@[email protected]}{\jlreq@page{1}}
\@writefile{toc}{\contentsline {section}{\numberline {1}ほげ}{1}}
\newlabel{sec:hoge}{{1}{1}}
\newlabel{sec:hoge@cref}{{[section][1][]1}{1}} となって2回目のタイプセット以降も正しく処理されますが,修正版だと \relax
\providecommand\zref@newlabel[2]{}
\@writefile{toc}{\contentsline {section}{\numberline {1}ほげ}{1}}
\newlabel{\relax }{{1}{1}}
\newlabel{\relax @cref}{{[section][1][]1}{1}} と ! Missing \endcsname inserted.
<to be read again>
\relax
l.4 \newlabel{\relax }{{1}{1}}
? まだ詳しく見ていないのですが,取り急ぎご報告まで. |
今回の修正ではなく,仰るとおりもう少し前の修正です.大体原因はわかりましたが,どうするかは今から考えます. |
とりあえず 7d172c0 でエラーが発生しないようにはしました. ただし,cleverrefパッケージ利用時には \section{あ}\label{label}
\subsection{い} というような時に |
関係ない問題を混ぜてしまいましたが,対応ありがとうございます.エラーが解消されたのを手元で確認しました. LaTeX標準の相互参照関連をいろいろ書き換えてるせいで |
1f86b41 |
以下のソースをpLaTeXでタイプセットすると和文約物とラテン文字の間に不自然なアキが入りますが,これはJLREQ 3.2.6の
に準拠していないように見受けられます.
jartcile
,jsarticle
,bxjsarticle
の3クラスではベタ組になりました.jlreq
クラスとotf
パッケージのどちらに原因があるのかはよく分からないのですが,欧文のarticle
クラスを用いてもベタ組になったのでotf
パッケージが和文用文書クラスとしてjlreq
を考慮し損ねているということでもなさそうです.ただ,バンドルされていないTFMを使っている以上はサポートの対象外でしょうか?The text was updated successfully, but these errors were encountered: