我想定义一个\removable
命令来标记\footnote
我认为是多余的和可有可无的单词、短语、句子甚至整个段落,以便有一天我不得不删减我的论文以达到字数限制。
\newif\ifremove
\newcommand\removable[1]{\ifremove\else #1\fi}
但就目前情况而言,当\ifremove
结果为真时,会\removable
出现一个额外的空格。
This is \removable{clearly} right.
我想我需要在其中添加\unskip
或\ignorespaces
。
\newcommand\removable[1]{\ifremove\unskip \else #1\fi}
\newcommand\removable[1]{\ifremove\ignorespaces \else #1\fi}
考虑到\removable
不仅要在句子中使用,还要在段落的开头和结尾、垂直模式的中间以及各种上下文中使用,我应该使用哪一个:\unskip
或\ignorespaces
?或者是别的什么?
\documentclass{article}
\newif\ifremove
\newcommand\removable[1]{\ifremove\else#1\fi}
\removetrue
\begin{document}
This is \removable{clearly} right.
\removable{This is ridiculously right.}
That's it.
\end{document}
答案1
您可以按如下方式操作。LaTeX 内核定义\@bsphack
和\@esphack
使命令对空间“透明”。
\documentclass{article}
\newif\ifremove
\removetrue
\makeatletter
\newcommand\removable[1]{%
\ifremove
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi
{\@bsphack\@esphack}{#1}%
}
\makeatother
\begin{document}
\section{Removed}
This is \removable{clearly} right.
\removable{This is ridiculously right.}
That's it.
\section{Shown}\removefalse
This is \removable{clearly} right.
\removable{This is ridiculously right.}
That's it.
\end{document}