Tengo este comando definido en mi tesis y funciona bien, pero cuando intento incluirlo en algún otro documento no funciona (el compilador informa que el comando no está definido). ¿Qué me olvido de definir/incluir?
\documentclass{article}
\usepackage[normalem]{ulem}
\usepackage{xcolor}
\def\revisionHighlight{True}
\def\revisionHighlightOld{True}
\newcommand{\correction}[2]{% old word, new word
\ifnum\pdfstrcmp{\revisionHighlight}{True}=0%
\ifnum\pdfstrcmp{\revisionHighlightOld}{True}=0%
\stkout{#1}\textcolor{red}{#2}%
\else%
\ifx&%
\ignorespaces
\else
\textcolor{red}{#2}%
\fi
\fi
\else%
\ifx&%
\ignorespaces
\else
#2%
\fi
\fi}
\begin{document}
\correction{a}{b}
\end{document}
Respuesta1
Hasta donde yo sé, la macro para tachar texto se llama \sout
, no \stkout
.
Tenga en cuenta que tiene un par de errores %
al final de las líneas, concretamente después de =0
.
\documentclass{article}
\usepackage[normalem]{ulem}
\usepackage{xcolor}
\def\revisionHighlight{True}
\def\revisionHighlightOld{True}
\newcommand{\correction}[2]{% old word, new word
\ifnum\pdfstrcmp{\revisionHighlight}{True}=0
\ifnum\pdfstrcmp{\revisionHighlightOld}{True}=0
\sout{#1}\textcolor{red}{#2}%
\else
\ifx&%
\ignorespaces
\else
\textcolor{red}{#2}%
\fi
\fi
\else
\ifx&%
\ignorespaces
\else
#2%
\fi
\fi}
\begin{document}
\correction{a}{b}
\end{document}
Sin embargo , preferiría un enfoque basado en \newif
.
\documentclass{article}
\usepackage[normalem]{ulem}
\usepackage{xcolor}
\newif\ifrevisionHighlight
\revisionHighlighttrue
\newif\ifrevisionHighlightOld
\revisionHighlightOldtrue
\newcommand{\correction}[2]{% old word, new word
\ifrevisionHighlight
\ifrevisionHighlightOld
\sout{#1}\textcolor{red}{#2}%
\else
\if\relax\detokenize{#2}\relax
\ignorespaces
\else
\textcolor{red}{#2}%
\fi
\fi
\else
\if\relax\detokenize{#2}\relax
\ignorespaces
\else
#2%
\fi
\fi}
\begin{document}
\correction{a}{b}
\end{document}