Skip to content
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

\verb の冒頭の空白 #49

Closed
aminophen opened this issue Aug 11, 2017 · 4 comments
Closed

\verb の冒頭の空白 #49

aminophen opened this issue Aug 11, 2017 · 4 comments
Labels

Comments

@aminophen
Copy link
Member

本家 LaTeX2e の \verb の定義には

\relax \ifmmode \hbox \else \leavevmode \null \fi …(以下略)

というように \null があります。この理由は,TeX.SX のここに書かれている通り,「\verb| abc| と書いた場合に冒頭のスペースが消えないようにするため」です(回答自体は Heiko Oberdiek 氏の推察によりますが,コメントにある通り Frank Mittelbach 氏がその通りだと認めています)。

pLaTeX はまさにこの \null を消しているので,\verb の冒頭の空白が消滅します。例示ソース:

\documentclass{article}
\parindent0pt
\begin{document}

  x\linebreak
  \begingroup
    \verb| |y
  \endgroup

\end{document}

% 一応補足ですが,上記 TeX.SX にある MWE は

\documentclass{article}
\begin{document}
  \noindent x\\
  \begingroup
    % \let\null\relax
    \verb| |y
  \endgroup
\end{document}

となっていますが,これは LaTeX と(現行の)pLaTeX で差が出ません。この理由は \\ の定義が違っているからで,\@gnewline に追加された \null の影響です。(参考: #27

@aminophen
Copy link
Member Author

(LaTeX と pLaTeX で違いが出るので issue にしましたが,これは解消不能な予感がします。ただ,「違いが出る」という事実認識の共有と,必要とあらばドキュメントに書いておこう,という考えから立てたものです。)

@h-kitagawa
Copy link
Member

確か \null を消した理由って,和欧文間空白を挿入する処理が \null を透過しないことでしたから,次の 2 条件を同時に満たすものを挿入すれば良いと思います.

  • 和欧文間空白の挿入処理は透過する
  • discardable(行分割時に消える)ノードではない

とりあえず \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}

@aminophen
Copy link
Member Author

ありがとうございます。テストのため 033fdde で exppl2e.sty に入れてみました。

@aminophen
Copy link
Member Author

256c0f0 でカーネルへ移し,jltxdoc.cls の方の定義もこれに合わせ \vadjust{} を追加しました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants