变更跟踪命令在引用方面存在问题

变更跟踪命令在引用方面存在问题

\added{}我正在修改一份科学出版物,并使用、\deleted{}和命令跟踪变化\replaced{good}{bad}

\citet{}尝试替换/添加/删除包含使用或命令所作引用的文本时,编译失败\citep{},例如:

\replaced{This is a better sentence \citep{somearticle2016}}{This sentence is lame}

不起作用。我尝试\protect按照建议在引用前使用这里,还尝试按照建议在引文周围添加花括号这里,但没有成功。我宁愿避免将引用放在\replaced{good}{bad}命令之外(像这样\replaced{This is a better sentence} \added{\citep{somearticle2016}}{This sentence is lame}:)。

有人遇到过这个问题吗?你是如何解决的?请注意,我无法添加自己的宏,并且想避免添加包。

\replaced{good}{bad}定义如下(但不能修改):

\def\replaced{\@ifnextchar[{\xreplaced}{\yreplaced}}

\long\def\xreplaced[#1]#2#3{%
\ifdraft
\global\advance\refchangenumber by 1
\ifnumlines\xdef\doit{\noexpand\linelabel{\the\refchangenumber}}\doit\else%
\xdef\doit{\noexpand\label{\the\refchangenumber}}\doit\fi%
{\color{trackcolor}(Replaced: \sout{#2}}
{\color{black}replaced with:} {\color{trackcolor} #3)}%
\expandafter\gdef\csname
changenum\the\refchangenumber\endcsname{Replaced: [#1]
{\color{trackcolor}\sout{#2}} {\color{black} replaced with:}
{\color{trackcolor}#3}, }\else#3\fi}

\long\def\yreplaced#1#2{%
\ifdraft
\global\advance\refchangenumber by 1
\ifnumlines\xdef\doit{\noexpand\linelabel{\the\refchangenumber}}\doit\else%
\xdef\doit{\noexpand\label{\the\refchangenumber}}\doit\fi%
{\color{trackcolor}(Replaced: \sout{#1}}
{\color{black}replaced with:} {\color{trackcolor} #2)}%
\expandafter\gdef\csname changenum\the\refchangenumber\endcsname{Replaced:
{\color{trackcolor}\sout{#1}} {\color{black} replaced with:}
{\color{trackcolor}#2}, }\else#2\fi}

答案1

对我来说,将引用放入\mbox; 中是有效的,就像这样:

\replaced{This sentence is lame}{This is a better sentence \mbox{\citep{somearticle2016}}}

当然,这会导致换行。但是,随着更改突出显示的激活,良好的换行并不是首要任务……

相关内容