다른 문서의 미주 및 번호 매기기 사용

다른 문서의 미주 및 번호 매기기 사용

다른 문서에서 생성된 미주를 사용하여 현재 문서를 제공할 수 있습니까?

여기에 이미지 설명을 입력하세요

제가 계획한 작업 흐름은 미주를 파일에 넣고 에서 sepfootnotes각 메모의 위치를 ​​표시한 DocA.tex다음 에서 각 메모의 내용을 인쇄하는 것입니다 DocB.tex. MWE는 DocB.tex. 저는 flowframDocA를 정적 프레임에 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의 카운터를 사용하여 번호 매기기와 배치가 정확해지도록 하는 것이 좋습니다. .

내 첫 번째 생각은 DocA 파일을 사용하기 위해 \newfootnotes명령을 다시 작성하는 것이었습니다 . 하지만 나는 그것을 달성할 만큼 LaTeX를 충분히 알지 못합니다. 그게 최선의 접근 방식인가요? 이미 이 문제를 다루는 패키지가 있나요?sepfootnotes.ent

나는 끝까지 읽었다이 게시물여기에는 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.

관련 정보