2018年8月17日

kmaedaさんのマニアックなネタに反応してみる.\paragraphの直後に\leavevmodeをおくよう改変してしまうと,\paragraph直後に\parがあった場合に同行見出しでなくなってしまいます.

\documentclass[a4paper]{article}
\usepackage{tikz}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@xsect}{\fi\ignorespaces}{\leavevmode\fi\ignorespaces}{}{}
\makeatother
\begin{document}
aaa
% この\paragraphの後に改行が入る
\paragraph{bbb}

ccc
\end{document}

というか多分これを回避するためにlatexにおける\paragraphの実装はああなっているんでしょう.まともには最後に挿入されるコードを

\documentclass[a4paper]{article}
\begin{document}
aaa
\paragraph{bbb}
\makeatletter
\par
\if@noskipsec\leavevmode\fi
\vfil\penalty-10000
\makeatother
\end{document}
みたいに\paragraph出力を考慮したものにすることになるのでしょうが…….

4 件のコメント:

  1. 確かにそうなりますね.自分の場合は \paragraph のあとに \par を入れたりしないので,現状のパッチでも間に合っている感じがしています.
    まあ,書きかけのノート以外で \paragraph で終わることはまずないので,本当にどうでもよいネタなのですが,反応いただいてありがとうございます.

    返信削除
  2. 確かに完成された文書で最後が\paragraphってことはまずないですね…….\paragraphの後に空行を入れる,というのは人によってはありそうなので,まぁ一般的には不都合が起こるかもしれないという話です……いやだから一般もくそもあまり困る話じゃないってことでしたけど.(札幌いいなぁ.)

    返信削除
  3. 後半に書かれているように,本当は pgfutil-latex.def のコードをいじるべきなのでしょうが,
    このコードの意図がよくわからないので,あまり触りたくない感じですね.(関西に帰ってきた瞬間に台風に襲われるらしい.)

    返信削除
  4. 確かによくわからないコードです.まぁ運用回避で問題ないかなぁと思いますが.(結構被害も出ていたようでしたが大丈夫でしたでしょうか?)

    返信削除

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