Criando comando de comentário removível sem espaço extra

Criando comando de comentário removível sem espaço extra

Estou tentando criar um comando que possamos usar para comentários em nosso documento. Durante o desenvolvimento, queremos que os comentários apareçam; para a produção, queremos que desapareçam. Este é um problema bastante comum com muitas soluções.

Estou tendo um problema com o tokenizer do LaTeX; se o comando estiver rodeado de espaços, dois espaços serão emitidos. Entendo por que isso está acontecendo, mas nenhuma das soluções alternativas que encontrei é boa para mim. Aqui está um exemplo representativo.

\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}

Por \notesfalseter sido invocada, a nota não deveria (e não aparece). Mas os espaços à esquerda e à direita do comandofazeraparecer, o que é um problema para mim.

Eu poderia modificar o comando para ocupar todos os espaços depois dele, mas esse também não é o comportamento correto; se o comandoapenastiver espaços a seguir (como em the\note{...} text), ainda deverá haver um espaço emitido. Embora eu saiba que é possível usar coisas como \unskipexcluir o espaço anterior, não consigodetectaro espaço anterior (e seguinte) para que eu possa tomar uma decisão inteligente sobre se ele deve permanecer por aqui.

Alguém tem alguma sugestão para realizar esta tarefa?

Responder1

Aqui está uma solução

\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}

insira a descrição da imagem aqui

informação relacionada