命令定義的問題

命令定義的問題

我在論文中定義了這個命令,它運作得很好,但是當我嘗試將它包含在其他文件中時,它不起作用(編譯器報告該命令未定義)。我忘記定義/包含什麼?

\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&#2&%
            \ignorespaces
        \else
            \textcolor{red}{#2}%
        \fi
    \fi
\else%
    \ifx&#2&%
        \ignorespaces
    \else
        #2%
    \fi
\fi}

\begin{document}
\correction{a}{b}
\end{document}

答案1

據我所知,用於刪除文字的巨集稱為\sout,而不是\stkout

%請注意,行尾有一些錯誤,即 after =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&#2&%
            \ignorespaces
        \else
            \textcolor{red}{#2}%
        \fi
    \fi
\else
    \ifx&#2&%
        \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}

相關內容