Closed aminophen closed 6 years ago
(LaTeX と pLaTeX で違いが出るので issue にしましたが,これは解消不能な予感がします。ただ,「違いが出る」という事実認識の共有と,必要とあらばドキュメントに書いておこう,という考えから立てたものです。)
確か \null
を消した理由って,和欧文間空白を挿入する処理が \null
を透過しないことでしたから,次の 2 条件を同時に満たすものを挿入すれば良いと思います.
とりあえず \vadjust{}
ではどうなのだろう,と言ってみる.
\documentclass{article}
\makeatletter
\def\myverb#1{\relax\ifmmode\hbox\else\leavevmode#1\fi
\bgroup
\verb@eol@error \let\do\@makeother \dospecials
\verbatim@font\@noligs
\language\l@nohyphenation
\@ifstar\@sverb\@verb}
\def\TEST#1{\scantokens{%
x\linebreak
\begingroup
\myverb{#1}| |y% \verb の冒頭の空白
\endgroup
あ\myverb{#1}|a|い% \verb の前の和欧文間空白
\par
}}
\begin{document}
\parindent0pt\xkanjiskip=10pt % 強調
\TEST{\null}% \LaTeX
\TEST{} % pLaTeX
\TEST{\vadjust{}}
\end{document}
ありがとうございます。テストのため 033fdde で exppl2e.sty に入れてみました。
256c0f0 でカーネルへ移し,jltxdoc.cls の方の定義もこれに合わせ \vadjust{}
を追加しました。
本家 LaTeX2e の \verb の定義には
\relax \ifmmode \hbox \else \leavevmode \null \fi …(以下略)
というように \null があります。この理由は,TeX.SX のここに書かれている通り,「
\verb| abc|
と書いた場合に冒頭のスペースが消えないようにするため」です(回答自体は Heiko Oberdiek 氏の推察によりますが,コメントにある通り Frank Mittelbach 氏がその通りだと認めています)。pLaTeX はまさにこの \null を消しているので,\verb の冒頭の空白が消滅します。例示ソース:
% 一応補足ですが,上記 TeX.SX にある MWE は
となっていますが,これは LaTeX と(現行の)pLaTeX で差が出ません。この理由は
\\
の定義が違っているからで,\@gnewline
に追加された\null
の影響です。(参考: #27 )