Crear comando de comentario extraíble sin espacio adicional

Crear comando de comentario extraíble sin espacio adicional

Estoy intentando crear un comando que podamos usar para comentarios en nuestro documento. Durante el desarrollo, queremos que aparezcan los comentarios; para la producción, queremos que desaparezcan. Este es un problema bastante común con muchas soluciones.

Sin embargo, tengo un problema con el tokenizador de LaTeX; si el comando está rodeado de espacios, se emiten dos espacios. Entiendo por qué sucede eso, pero ninguna de las soluciones que puedo encontrar es buena para mí. He aquí un ejemplo 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}

Debido a que \notesfalseha sido invocada, la nota no debería aparecer (y no aparece). Pero los espacios a la izquierda y a la derecha del comandohaceraparecen, lo cual es un problema para mí.

Podría modificar el comando para comer todos los espacios posteriores, pero este tampoco es el comportamiento correcto; si el comandosolotiene espacios a continuación (como en the\note{...} text), aún debería haber un espacio emitido. Si bien sé que se pueden usar cosas como \unskipeliminar el espacio anterior, no puedodetectarel espacio anterior (y siguiente) para poder tomar una decisión inteligente sobre si debería permanecer ahí.

¿Alguien tiene alguna sugerencia para realizar esta tarea?

Respuesta1

Aquí hay una solución

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

ingrese la descripción de la imagen aquí

información relacionada