別の文書からの文末脚注と番号の使用

別の文書からの文末脚注と番号の使用

別のドキュメントで生成された文末脚注を現在のドキュメントにフィードできますか?

ここに画像の説明を入力してください

私が計画しているワークフローは、ファイルにエンドノートを入れsepfootnotes、 で各ノートの配置をマークしDocA.tex、 で各ノートの内容を印刷することですDocB.tex。MWE は ですDocB.tex。私は を使って、flowfram静的フレームに DocA を PDF として埋め込みます。これにより、3 列のフロー フレームで 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 のカウンターを使用して実行することをお勧めします。

最初に思いついたのは、DocA のファイルを使用するよう\newfootnotesにコマンドを書き直すことです。しかし、それを実現するには LaTeX の知識が足りません。これが最善のアプローチでしょうか? すでにこれに対応しているパッケージはありますか?sepfootnotes.ent

私は読み通したこの郵便受けこれには、 が含まれますreledmac。ただし、必要のないオーバーヘッドと機能がたくさんあるように思えました。

答え1

簡単ではありませんが、それほど難しいことではありません。基本的な考え方は、まさにあなたが提案したとおりです。つまり、最初のドキュメントの「メモ」を外部ファイルに書き込み、それを 2 番目のドキュメントに読み込みます。

では、まず最初の点に対処しましょう。

最初のドキュメント(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」に配置するだけで、メモを「書き込む」ことができます。理由は後で明らかになりますが、そのファイルにコマンドを書き込むことでこれを行います。

次に、2 番目のファイルです。このファイルは、以前に書き込まれたファイルを読み取る必要があります。1 つの問題は、メモをページに一致させるための何らかの機能が必要になることです。これを実行するには、ページ 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ページ

前述の通り、これは超堅牢なものではありません(完全にテストされているわけでもありません)。メモが1ページ以上にわたると、かなり失敗します。メモのないページがあると、ひどく失敗します。テキストを追加したい場合同様にメモの場合は、おそらくそれが可能ですが、DocA 用にそれを実行する追加のコマンドを記述する必要があります。基本的に、すべての設定が完了すると、実際に書き込みたいものはすべて DocA に入力されます。DocB は単なるラッパーの一種です。ただし、前後にテキストを入れることは完全に可能です。

追加編集reledmacちなみに、これはまさに適切であり、やりすぎではないと思います。ただし、人によって感じ方は異なります。

関連情報