У меня эта команда определена в моей диссертации, и она отлично работает, но когда я пытаюсь включить ее в какой-то другой документ, она не работает (компилятор сообщает, что команда не определена). Что я забыл определить/включить?
\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}
решение1
Насколько мне известно, макрос для зачеркивания текста называется \sout
, а не \stkout
.
Обратите внимание, что у вас есть несколько ошибок %
в конце строк, а именно после =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}
Хотя я бы предпочел подход \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}