2017年4月16日

というわけで\penaltyを保存&復帰させてみる.

\documentclass{jsarticle}
\newcount\savepenalty
\newcommand\myfootnote[1]{\savepenalty=\lastpenalty\message{penalty = \the\savepenalty}\unpenalty\footnote{#1}\penalty\savepenalty}
\begin{document}
\parbox{5zw}{あああ「\myfootnote{注}ああ}
\end{document}

想定通り.jlreq.clsでもやってみよう.

\documentclass[platex]{jlreq}
\pagestyle{empty}
\newcount\savepenalty
\newcommand\myfootnote[1]{\savepenalty=\lastpenalty\message{penalty = \the\savepenalty}\unpenalty\footnote{#1}\penalty\savepenalty}
\begin{document}
\parbox{5\zw}{あああ「\myfootnote{注}ああ}
\end{document}

あれ?コンソールへの出力を見ても\lastpenaltyが取得できていないらしい.文字クラス0との間にグルーがあるとだめそうね.

\documentclass{jsarticle}
\pagestyle{empty}
\postbreakpenalty`」=10000 % jis.tfmで」は文字クラス2,2と0の間には半角分のJFM glueがある.
\newcount\savepenalty
\newcommand\myfootnote[1]{\savepenalty=\lastpenalty\message{penalty = \the\savepenalty}\unpenalty\footnote{#1}\penalty\savepenalty}
\begin{document}
」\myfootnote{あ}あ
\end{document}
とするとpenalty = 0となる.\lastnodecharを使った方がよいのかもしれない.

というかJFMのそうだけど自動挿入を手動でどうこうするのがつらい.\X ... \Yとかすると\Xと\Yの間を無視してJFMとか禁則とかを復活させてくれる魔法のマクロはないですか?

0 件のコメント:

コメントを投稿

コメントの追加にはサードパーティーCookieの許可が必要です