
答案1
答案2
我認為OP的主要問題是他不喜歡將\texttt
點設定為與所有其他字元相同的寬度。
這裡我用一個token循環來解決這個問題。我搜尋了參數的每個標記\codename
。每次我找到 a 時.
,我都會將其替換為\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}