
終止符ではない(つまり、文を終わらせない)ピリオドの周りのスペースを制限するにはどうすればよいですか?
私の論文では、修飾名 ( などA.x
) を参照する必要があります。現在、私はそれらを と入力しています\texttt{A.x}
。ただし、次のスニペットのように、これによりピリオドの周囲にスペースが生成されることがあります。
名前の各部分を区切るピリオド記号の周りにほんの少しだけスペースを入れたいのですが、私が見つけたものはすべて数式モードのスペースに関するものでした。また、.
次のように、catcode を一時的に 11 に変更してみました。
\newcommand{\codename}[1]{
\begingroup
\catcode`.=11
\texttt{#1}
\endgroup
}
次に を使用します\codename{A.x}
。しかし、それは役に立ちませんでした。
どのような助けでも本当にありがたいです。
答え1
答え2
OP の主な問題は、\texttt
ドットを他のすべての文字と同じ幅に設定するという事実が気に入らないということだと思います。
ここで、トークン サイクルを使用して問題に対処します。 の引数のすべてのトークンを検索します\codename
。 が見つかるたびに.
、 に置き換えます\nobreak{\textrm{.}}\nobreak
。つまり、複数のドットを含むコード名はマクロでは問題になりません。
これにより、コンテキストの結果としてドットによって導入される間隔が回避され、ドットを に設定することで、 がに設定されている\textrm
場合でも、ドットの余分な幅が回避されます。\codename
\texttt
\documentclass{article}
\usepackage{tokcycle}
\Characterdirective{\ifx.#1\addcytoks{\nobreak{\textrm{.}}\nobreak}\else
\addcytoks{#1}\fi}
\newcommand\codename[1]{\tokencyclexpress#1\endtokencyclexpress}
\begin{document}
Here is \codename{A.1} code name.
Code names such as \texttt{\codename{A.2.4}}, can contain multiple dots!
By setting the dots in textrm, extra spacing is avoided even if the
codename is set in texttt.
\end{document}