![变更跟踪命令在引用方面存在问题](https://linux22.com/image/333787/%E5%8F%98%E6%9B%B4%E8%B7%9F%E8%B8%AA%E5%91%BD%E4%BB%A4%E5%9C%A8%E5%BC%95%E7%94%A8%E6%96%B9%E9%9D%A2%E5%AD%98%E5%9C%A8%E9%97%AE%E9%A2%98.png)
\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}}}
当然,这会导致换行。但是,随着更改突出显示的激活,良好的换行并不是首要任务……