添加

添加

LaTeX在插入新章节、节等时,能够很好地调整编号——更重要的是调整对编号的引用。

法律文件(和书籍),至少在德国,倾向于通过保持以前的编号不变来插入这些内容,但使用插入前的数字后跟小写字母(a,b,c,...),以表明某些内容已发生更改(无论是在最后一刻,还是 - 这是真正重要的情况 - 与上一版本相比)。

由于我认为很少会出现多个连续的脚注,因此我尝试了以下(非常粗糙和肮脏的)破解方法,如 MWE 中所示:

\documentclass{article}
\newcommand{\myextrafootnote}[1]{\renewcommand{\thefootnote}{\arabic{footnote}a}\footnote[\thefootnote]{#1}\renewcommand{\thefootnote}{\arabic{footnote}}}%
\begin{document}
This is the old text\footnote{foo}, followed by the new insert\myextrafootnote{New Exciting Stuff!!}, followed by the old next one.\footnote{bar}
\end{document}

遗憾的是,它并没有像我希望的那样发挥作用。虽然脚注本身看起来应该如此: 脚注,中间有一些额外的内容

文本得到额外的a 在脚注标记之前添加:如下所示: 文本,比实际需要的更多

当然,理想情况下,这a也应该来自某种形式的计数器(我也尝试过,但它变成了许多关于缺少参数的错误消息,所以我放弃了它并决定最好向专家请教......)所以如果即使连续添加多个脚注,它仍然可以正常工作 [并且不像现在这样粗糙]。

答案1

该命令的可选参数\footnote需要整数包含脚注的编号,而不是该编号的文本表示。因此,您应该使用

\footnote[\value{footnote}]{#1}

代替

\footnote[\thefootnote]{#1}

添加

那么,多余的“a”从何而来?为了理解这一点,让我们一步步检查错误代码是如何

\footnote[\thefootnote]{#1}

被 TeX 消化。该宏\thefootnote扩展(在 OP 使用它的上下文中)为1a,因此 (La)TeX 认为它相当于

\footnote[1a]{...}

但是,正如前面所说,它期望可选参数包含一个整数值;这个整数值在内部命令中本地分配给专用计数器(或footnotempfootnote取决于上下文)\@xfootnote。此分配的代码(相当于)

<counter> = #1\relax

在我们的例子中,

<counter> = 1a\relax

但是a终止整数常数 1,因此也终止赋值;此时,a标记被解释为在水平方向排版“a”字符的命令(IE(当前)模式。现在我们到了。

答案2

这里增加了一个计数器,每次使用extrastuff时都会进行步进。\myextrafootnote

但是,由于使用了26,因此通过这种方式不可能进行更多的添加。\alph{extrastuff}

如果您需要更多附加功能,那么alphalph增加计数器输出的包很有用!

\documentclass{book}


\newcounter{extrastuff}[chapter]

\newcommand{\myextrafootnote}[1]{%
  \stepcounter{extrastuff}%
  \begingroup
  \renewcommand{\thefootnote}{\arabic{footnote}\alph{extrastuff}}%
  \footnote[\value{footnote}]{#1}%
  \endgroup
}%
\begin{document}

This is the old text\footnote{foo}, followed by the new insert\myextrafootnote{New Exciting Stuff!!}, followed by the old next one.\footnote{bar}

New however is this text\myextrafootnote{Really new Exciting Stuff!!}, followed by the old next one.\footnote{foobar}
\end{document}

在此处输入图片描述

更新

extrastuff使用脚注计数器重置:

\documentclass{book}


\newcounter{extrastuff}[footnote]

\newcommand{\myextrafootnote}[1]{%
  \stepcounter{extrastuff}%
  \begingroup
  \renewcommand{\thefootnote}{\arabic{footnote}\alph{extrastuff}}%
  \footnote[\value{footnote}]{#1}%
  \endgroup
}%
\begin{document}

This is the old text\footnote{foo}, followed by the new insert\myextrafootnote{New Exciting Stuff!!}, now for something completely different\myextrafootnote{Other top secret content}, followed by the old next one.\footnote{bar}

New however is this text\myextrafootnote{Really new Exciting Stuff!!}, followed by the old next one.\footnote{foobar}
\end{document}

答案3

这是短期思维的一个很好的例子。您的解决方案将导致的问题比它解决的问题更多。您将如何标记下一次修订的新脚注?

如果您需要显示文档两个修订版本之间的变化,请提供 document-version-1.tex 和 document-version-2.tex 之间的»diff«,后者是最新修订版本。

请查看,您可以通过在控制台窗口中latexdiff输入来获取手册。基本上,它只是texdoc latexdiff

latexdiff document-version-1.tex document-version-2.tex > document-diff.tex

然后打开并编译 document-diff.tex。PDF 包含所有更改。

你可以选择删除和​​添加的颜色和标记。我更喜欢这样

\providecommand{\DIFadd}[1]{{\protect\color{blue}#1}} %DIF PREAMBLE
\providecommand{\DIFdel}[1]{{\protect\color{red}\protect\scriptsize{#1}}}

进入 document-diff.tex 的前言部分。

这样做的好处是可以清楚地显示文档两个版本之间的差异。无论是现在还是将来的任何修订。

如果您预计会有很多修订,请考虑使用像 git 这样的版本控制系统,然后使用 latexbatchdiff,请参见此处:https://tex.stackexchange.com/a/44092/4736

相关内容