Добавление

Добавление

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}

Добавление

Итак, откуда взялась лишняя «а»? Чтобы понять это, давайте рассмотрим шаг за шагом, как ошибочный код

\footnote[\thefootnote]{#1}

переваривается TeX. Макрос \thefootnoteрасширяется (в контексте, в котором OP использовал его) до 1a, поэтому (La)TeX видит эквивалент

\footnote[1a]{...}

Но, как уже было сказано, он ожидает, что необязательный аргумент будет содержать целочисленное значение; это целочисленное значение локально назначается выделенному счетчику (либо footnote, mpfootnoteв зависимости от контекста) внутри \@xfootnoteвнутренней команды. Код для этого назначения (эквивалентно)

<counter> = #1\relax

что в нашем случае становится

<counter> = 1a\relax

Но aзавершает целочисленную константу  1, а следовательно, и присваивание; в этот момент aтокен интерпретируется как команда набрать символ «a» по горизонтали (то есть, текущий) режим. И вот мы здесь.

решение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

Это хороший пример краткосрочного мышления. Ваше решение вызовет больше проблем, чем решит. Как вы будете отмечать новые сноски следующей редакции?

Если вам необходимо отобразить изменения между двумя версиями документа, укажите »diff« между document-version-1.tex и document-version-2.tex, причем последняя версия является последней.

Пожалуйста, посмотрите на 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

Связанный контент