내 논문에 이 명령이 정의되어 있고 잘 작동하지만 다른 문서에 포함하려고 하면 작동하지 않습니다(컴파일러에서 명령이 정의되지 않았다고 보고함). 무엇을 정의/포함하는 것을 잊었나요?
\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}