我在使用带有空输出的命令时遇到问题,该命令添加了额外的空格。
我有一份需要大量更正的大型文档。为了突出显示添加和删除的文本以便于查看,我决定定义命令 \xcut{} 和 \xadd{},稍后我可以轻松地重新定义这些命令以生成最终版本。
问题是空的 \xcut{} 现在在输出中添加了一个额外的空格。我相信有人会告诉我有更好的方法,但我已经以这种方式进行了所有更改,并且不想再经历整个过程。谢谢。
例子:
\documentclass{article}
\usepackage[usenames]{xcolor}
\usepackage[normalem]{ulem}
\def\Corrections{2} % Highlight or Final - 1 or 2
\ifnum\Corrections=1 % 1 - Highlight
\newcommand{\xcut}[1]{{\color{red}{\sout{#1}}}}%
\newcommand{\xadd}[1]{{\color{green}{\uline{#1}}}}%
\fi
\ifnum\Corrections=2 % 2 - Final
\newcommand{\xcut}[1]{}%
\newcommand{\xadd}[1]{#1}%
\fi
\begin{document}
CUT: Shall I compare thee \xcut{thee} to a summer's day?
ADD: Thou art more \xadd{lovely} and more temperate:
BOTH: Rough winds do \xcut{snake} \xadd{shake} the darling buds of May,
\end{document}
答案1
不假思索,第一个尝试的是
\newcommand\xcut[1]{\ignorespaces}
答案2
制作“隐形”命令的标准方法是\@bsphack
在其开始和\@esphack
结束时使用。
\documentclass{article}
\usepackage[usenames]{xcolor}
\usepackage[normalem]{ulem}
\def\Corrections{2} % Highlight or Final - 1 or 2
\ifnum\Corrections=1 % 1 - Highlight
\newcommand{\xcut}[1]{{\color{red}{\sout{#1}}}}%
\newcommand{\xadd}[1]{{\color{green}{\uline{#1}}}}%
\fi
\makeatletter
\ifnum\Corrections=2 % 2 - Final
\newcommand{\xcut}[1]{\@bsphack\@esphack}%
\newcommand{\xadd}[1]{#1}%
\fi
\begin{document}
CUT: Shall I compare thee \xcut{thee} to a summer's day?
ADD: Thou art more \xadd{lovely} and more temperate:
BOTH: Rough winds do \xcut{snake} \xadd{shake} the darling buds of May,
\end{document}