복잡성 패키지의 모든 명령에 \xspace를 삽입할 수 있나요?

복잡성 패키지의 모든 명령에 \xspace를 삽입할 수 있나요?

complexity패키지는 컴퓨터 과학자에게 매우 유용한 패키지입니다. 최근에 나는 후속 공백을 방지하기 위해 이스케이프가 필요하지 않은 매크로를 정의하는 데 도움이 되는 매크로를 xspace제공하는 패키지를 발견했습니다 .\xspace\

\newcommand{\myname}{Nicola\xspace}
...
\myname is walking on the street % No need to write \myname\ or \myname{}

이제 나는많은텍스트 내에서 일반적으로 사용되므로 이스케이프가 매우 빈번하게 발생하는 수십 개의 명령을 정의하는 복잡도 패키지의 명령입니다. 기본적으로 사용하고 싶지만 \xspace재정의는 \ComplexityFont작동하지 않습니다. 왜냐하면 \xspace호출되는 매크로의 끝 부분에 정확히 넣어야 하기 때문입니다(여기서 확장된 매크로가 아님). 패키지는 간단한 \newcommands로 모든 매크로를 정의하므로 여기에 연결할 방법이 없다고 생각합니다.

이 재정의를 어떤 방식으로든 자동화할 수 있습니까? 아니면 이 기능을 패키지 작성자에게 직접 제안해야 합니까?

답변1

기본적으로 모든 명령은 의 관점에서 정의되므로 \ComplexityFont매우 쉽습니다.

\documentclass{article}
\usepackage[small]{complexity}
\usepackage{etoolbox,xspace}

\robustify\ComplexityFont
\apptocmd\ComplexityFont{\xspace}{}{}


\begin{document}

\section{An \NP problem}

An \NP problem

\end{document}

또한 기본 명령을 강화하여 및 와 같은 인수를 이동할 때 매크로 \protect앞에 올 필요가 없습니다 .complexity\section\caption

그러나 내 조언은 저자가 매뉴얼에서 말하는 내용을 따르는 것입니다.

complexity따라서 항상 수학 모드 내에서 명령을 사용하는 것이 가장 좋습니다 .

읽다xspace의 단점.\xspace

\documentclass{article}
\usepackage[small]{complexity}
\usepackage{etoolbox}

\robustify\ComplexityFont    

\begin{document}

\section{An $\NP$ problem}

An $\NP$ problem

\end{document}

여기에 이미지 설명을 입력하세요

관련 정보