
마침표가 아닌 마침표 주위의 공백을 어떻게 제한할 수 있습니까(예: 문장을 끝내지 않음)?
내 논문에서는 한정된 이름(예: )을 참조해야 합니다 A.x
. 현재는 \texttt{A.x}
. 그러나 이로 인해 마침표 주위에 공간이 생성되는 경우가 있습니다(예: 다음 코드 조각).
이름 부분을 구분하는 마침표 기호 주위에 약간의 공간만 두고 싶지만 내가 찾을 수 있는 모든 것은 수학 모드의 간격과 관련된 것이었습니다. 또한 다음과 같이 일시적으로 catcode를 .
11로 변경해 보았습니다.
\newcommand{\codename}[1]{
\begingroup
\catcode`.=11
\texttt{#1}
\endgroup
}
그런 다음 \codename{A.x}
. 그러나 그것은 도움이 되지 않았습니다.
어떤 도움이라도 정말 감사하겠습니다.
답변1
답변2
\texttt
OP의 주요 문제는 그가 다른 모든 문자와 동일한 너비로 점을 설정한다는 사실을 좋아하지 않는다는 것입니다 .
여기서는 토큰 주기를 사용하여 문제를 해결합니다. 나는 인수의 모든 토큰을 검색합니다 \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}