Использование концевых сносок И нумерации из другого документа

Использование концевых сносок И нумерации из другого документа

Можно ли использовать концевые сноски, созданные другим документом, для присоединения к текущему документу?

введите описание изображения здесь

Мой планируемый рабочий процесс заключается в том, чтобы поместить концевые сноски в sepfootnotesфайл, отметить размещение каждой сноски в DocA.tex, затем распечатать содержимое каждой сноски в DocB.tex. MWE — это DocB.tex. Я использую flowframдля встраивания DocA в виде PDF в статичный фрейм. Это позволяет трем столбцам потоковых фреймов печатать очень обширные заметки из DocA.

\documentclass[10pt]{book}
\usepackage[T1]{fontenc}
\usepackage{newtxtext}
\usepackage{geometry}
\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{flowfram}
\usepackage{ragged2e}

\geometry{margin=0pt}
\setlength{\RaggedRightParindent}{\parindent}

\makebackgroundframe

\newstaticframe*{5.497in}{7.329in}
{3.003in}{3.671in}[pagegraphic]

\newflowframe{2.493in}{9.976in}
{0.30in}{0.6in}[leftcol]

\newflowframe{2.493in}{2.780375in}
{3.003in}{0.6in}[middlecol]

\newflowframe{2.493in}{2.780375in}
{5.706in}{0.6in}[rightcol]

\newcommand{\pagebox}[1]{%
{\setlength{\fboxsep}{1pt}\setlength{\fboxrule}{1pt}%
\fcolorbox{black}{white}{#1}}}

\setstaticframe{1}{backcolor={[rgb]{0.976,0.937,0.78}}}
\setstaticframe{2}{border=pagebox, offset=-2pt, backcolor={[rgb]{1, 1, 1}}}

\begin{document}

\RaggedRight

\begin{staticcontents*}{pagegraphic}
\includegraphics[page=3, scale=0.9448]{TestiPadSize.pdf}
\end{staticcontents*}

\lipsum

\end{document}

Я понимаю, что мог бы сделать это вручную, просто введя ссылку на каждую заметку, которая появляется в DocA, но по мере изменения документа я бы предпочел использовать счетчики из DocA, чтобы нумерация и размещение были точными.

Моя первая мысль — переписать \newfootnotesкоманду из sepfootnotesдля использования файла DocA .ent. Но я не знаю LaTeX достаточно хорошо, чтобы сделать это. Это лучший подход? Есть ли пакет, который уже справляется с этим?

Я прочиталэта почтачто включает в себя reledmac. Хотя мне показалось, что это слишком много накладных расходов и функционала, который мне не нужен.

решение1

Это не просто, но и не очень сложно. Основная идея именно такая, как вы предложили: записать "заметки" из первого документа во внешний файл, а затем прочитать их во второй документ.

Итак, сначала разберемся с первым пунктом:

В первом документе — том, что вы называете DocA:

\documentclass{article}
\makeatletter
% First we need a new "write".
\newwrite\notesdoc
\immediate\openout\notesdoc=\jobname.notes
\newcounter{enotecounter}
\newcommand{\externalnote}[1]{%
  \refstepcounter{enotecounter}%
  \textsuperscript{\arabic{enotecounter}}
  \protected@write\notesdoc{}{\string\extnote{\arabic{enotecounter}}{#1}{\thepage}}}
\makeatother
\begin{document}

Here is some text.\externalnote{Here is a note. It is a long note,
and I am hoping that it will end up going over several lines.} And
here is another\externalnote{Another}

\clearpage

Here is some text on the next page\externalnote{And this is the text.}

\end{document}

Это позволяет "писать" заметки, просто делая соответствующую отметку, а затем фактически помещая текст во внешний файл "\jobname.notes". По причинам, которые станут очевидными, мы делаем это, записывая команду в этот файл.

Затем второй файл, который должен прочитать этот ранее записанный файл. Одна проблема: нам понадобится некое средство для сопоставления заметки со страницей. Чтобы сделать это, мы предполагаем, что начинаем со страницы 1 (и мы явно размещаем статическое изображение на этой странице): после этого мы смотрим, не «изменился» ли номер страницы для заметки: если это так, мы также очищаем страницу и вставляем следующую страницу статического изображения.

Примечание -- это не сработает, если в DocA есть страницы, не имеющие примечаний: они просто будут пропущены. Но мы не пытаемся написать пакет, а просто решение конкретной проблемы!

\documentclass[10pt]{book}
\usepackage[T1]{fontenc}
\usepackage{newtxtext}
\usepackage{geometry}
\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{flowfram}
\usepackage{ragged2e}

\newcommand{\thispage}{1}

\makeatletter
\newcommand{\extnote}[3]{%
  \edef\@tempa{#3}
  \if\@tempa\thispage
  \else
  \clearpage
  \begin{staticcontents*}{pagegraphic}
    \includegraphics[page=#3, scale=0.6]{200219a.pdf}
  \end{staticcontents*}
  \fi
  \par\textbf{#1}.\quad#2}
\makeatother

\geometry{margin=0pt}
\setlength{\RaggedRightParindent}{\parindent}

\makebackgroundframe

\newstaticframe*{5.497in}{7.329in}
{3.003in}{3.671in}[pagegraphic]

\newflowframe{2.493in}{9.976in}
{0.30in}{0.6in}[leftcol]

\newflowframe{2.493in}{2.780375in}
{3.003in}{0.6in}[middlecol]

\newflowframe{2.493in}{2.780375in}
{5.706in}{0.6in}[rightcol]

\newcommand{\pagebox}[1]{%
{\setlength{\fboxsep}{1pt}\setlength{\fboxrule}{1pt}%
\fcolorbox{black}{white}{#1}}}

\setstaticframe{1}{backcolor={[rgb]{0.976,0.937,0.78}}}
\setstaticframe{2}{border=pagebox, offset=-2pt, backcolor={[rgb]{1, 1, 1}}}

\begin{document}

\RaggedRight

\begin{staticcontents*}{pagegraphic}
\includegraphics[page=1, scale=0.6]{200219a.pdf}
\end{staticcontents*}

\input{200219a.notes}

\end{document}

Разместив (первую) страницу статического контента, мы затем просто вводим файл заметок, который, в свою очередь, печатает заметки и изменяет страницу и «статичный» фрейм там, где это необходимо.

Затем мы запускаем DocA, а затем DocB.

Результат:

Страница 1 Страница 2

Как уже отмечалось: это не супер-надежно (и никоим образом не полностью протестировано). Это терпимо даст сбой, если заметки будут занимать более одной страницы. И это будет ужасно давать сбой, если есть страница, на которой нет заметок. Если вы хотите добавить текста такжезаметки, вы, вероятно, могли бы это сделать, но вам нужно будет написать дополнительную команду для DocA, чтобы сделать это. По сути, как только все настроено, все, что вы на самом деле хотите НАПИСАТЬ, попадает в DocA: DocB — это просто своего рода оболочка — хотя вы вполне могли бы иметь текст до или после.

ОТРЕДАКТИРОВАНО ДЛЯ ДОБАВЛЕНИЯКстати, я бы сказал, что reledmacэто как раз то, что нужно, и не перебор. Но YMMV.

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