建立沒有額外空間的可移動註解命令

建立沒有額外空間的可移動註解命令

我正在嘗試建立一個可用於在文件中進行註釋的命令。在開發過程中,我們希望評論出現;對於生產,我們希望它們消失。這是一個很常見的問題,有很多解決方案。

不過,我對 LaTeX 的分詞器有疑問;如果指令被空格包圍,則會發出兩個空格。我明白為什麼會發生這種情況,但我能找到的解決方法對我沒有任何好處。這是一個有代表性的例子。

\documentclass[letterpaper]{article}

\newif\ifnotes
\newcommand{\note}[1]{\ifnotes{#1}\fi}
\notesfalse
\newcommand{\nonotes}{\notesfalse}

\begin{document}
\pagestyle{empty}

Testing \note{X} testing testing.

\end{document}

因為\notesfalse已經被調用,所以註解不應該(也不會)出現。但是指令左右的空格出現,這對我來說是一個問題。

我可以修改命令以吃掉它後面的所有空格,但這也不是真正正確的行為;如果命令僅有的後面有空格(如the\note{...} text),仍然應該有一個發出的空格。雖然我知道可以使用諸如\unskip刪除前面的空格之類的東西,但我不知所措探測前面(和後面)的空間,這樣我就可以明智地決定它是否應該保留。

有人對完成這項任務有什麼建議嗎?

答案1

這是一個解決方案

\documentclass[letterpaper]{article}

\newif\ifnotes
\makeatletter
\newcommand{\note}[1]{\@bsphack\ifnotes{#1}\fi\@esphack}
\makeatother
\notesfalse
\newcommand{\nonotes}{\notesfalse}

\begin{document}
\pagestyle{empty}

Testing \note{X} testing testing.

Testing\note{X} testing testing.

Testing \note{X}testing testing.

Testing\note{X}testing testing.

\notestrue

Testing \note{X} testing testing.

Testing\note{X} testing testing.

Testing \note{X}testing testing.

Testing\note{X}testing testing.

\end{document}

在此輸入影像描述

相關內容