나는 todonotes
텍스트에 작은 여백 메모를 추가하기 위해 패키지를 사용하고 있습니다.
Hello\todo{test} World!
이미 지적한 바와 같이 단어 사이의 공백을 제거합니다.이 질문. 그래서 나는 노력했다
\pretocmd{\todo}{\@bsphack}{}{}
\apptocmd{\todo}{\@esphack}{}{}
이는 단어 간 공간을 추가하지만 에 전달하는 대신 모든 매개변수를 출력합니다 \todo
.
전체 MWE:
\documentclass{article}
\usepackage{etoolbox}
\usepackage{todonotes}
\makeatletter
\pretocmd{\todo}{\@bsphack}{}{}
\apptocmd{\todo}{\@esphack}{}{}
\makeatother
\begin{document}
Hello\todo{test} World!
\end{document}
답변1
\todo
선택적 인수를 갖도록 정의되었으므로 패치 \newcommand
할 매크로는 실제로
\\todo
(이름에 백슬래시가 포함되어 있음) 지정하기가 어렵습니다. 다음을 사용하여 패치하거나 패키지 \csname
를 사용하여 패치 할 수 있습니다 xpatch
.
\documentclass{article}
\usepackage{todonotes}
\usepackage{xpatch}
\makeatletter
\xpretocmd{\todo}{\@bsphack}{}{}
\xapptocmd{\todo}{\@esphack}{}{}
\makeatother
\begin{document}
Hello\todo{test} World!
\end{document}
당신 과 함께 etoolbox
작성해야합니다
\expandafter\pretocmd\csname\string\todo\endcsname{\@bsphack}{}{}
\expandafter\apptocmd\csname\string\todo\endcsname{\@esphack}{}{}
답변2
이를 더 쉽게 달성할 수 있습니다. \todo
간단히 정의하면 다음과 같습니다 .
\newcommand{\todo}[2][]{\@todo[#1]{#2}}%
재정의할 수 있습니다(원래 정의보다 약간 더 안전한 방법으로 이 답변에 대한 Bruno Le Floch의 의견을 참조하세요(감사합니다!)).
\documentclass{article}
\usepackage{todonotes}
\makeatletter
\renewcommand{\todo}[2][]{\@bsphack\@todo[{#1}]{#2}\@esphack}%
\makeatother
\begin{document}
Hello\todo{test} World!
\end{document}