我有一份文档的版本,我想创建一个新版本并修改其中的几处内容。
创建更正列表的最佳方法是什么?
我想用某个命令(例如\wrong{ }
)封装“错误”文本,然后用其他命令(例如\fixed{ }
)封装更正后的文本。然后我可以 (a) 自动按每个更正的页面和部分获取更正列表,以及 (b) 切换更正版本的显示。
有没有什么类似的东西我可以用?
谢谢。
编辑:我使用了评论中提出的帖子并进行了修改,如下所示:
编辑 2:根据回复,我也对此进行了更正,以备将来使用。因此,此代码片段现在可以正常工作。
\documentclass{journal}
\long\def\addto#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}}
\def\correctionslist{}
\long\def\rightwrong#1#2{#1\edef\curpos{\arabic{section}.\arabic{subsection}}\expandafter\global\expandafter\addto\expandafter\correctionslist\expandafter{\curpos: RIGHT: #1\\ WRONG: #2 \par}}
\begin{document}
\newcommand{\curpos}{\arabic{section}.\arabic{subsection}}
\section{How to make cookies}
\subsection{Why do we want cookies?}
Cookies are tasty.
\rightwrong{
We like any type.
}
{
But only if they're Oreos.
}
\subsection{How do we make them?}
We need flour and sugar.
\rightwrong{
Some sugar will suffice.
}
{
Lots of sugar.
}
\section{List of corrections}
\correctionslist
\end{document}
问题是,\curpos
只有调用 时才会计算\correctionslist
,因此 section.subsection 编号是错误的。我该如何解决这个问题?
再次感谢。
答案1
一种方法是在\curpos
内定义。 确保所有宏都会立即展开,因此当前位置确实被保存了。此外,还应添加一些宏以确保在调用时展开。\rightwrong
\edef
\edef
\expandafter
\curpos
\rightwrong
\long\def\rightwrong#1#2{#1\edef\curpos{\arabic{section}.\arabic{subsection}}\expandafter\global\expandafter\addto\expandafter\correctionslist\expandafter{\curpos: RIGHT: #1\\ WRONG: #2 \par}}
还有一些其他的事情需要做才能使输出看起来更好(例如,分离不同的条目,添加\noindent
),但我猜相应的修改应该是“容易的”。
编辑:添加了一些在调用时直接评估的\expandafter
内容。\curpos
\rightwrong