重印页面但尺寸较小

重印页面但尺寸较小

这是一个不常见的请求。假设我有一页,即 A 页。它的尺寸为 x 英寸 * y 英寸。在另一页,即 B 页上,我想将页面缩小到一半大小(0.5 x 英寸 * 0.5 y 英寸),以用作图形/插图。我希望​​它们相互关联,这样如果我更改 A 的内容,B 也会打印相同的更改(意味着 B 无需复制粘贴)。请参阅以下插图(不是用 LaTeX 生成的,因为我不知道如何生成):

page-Apage-B

请注意,页面 B 上的迷你页面 A 不仅仅是一张图片,而且还将编译页面 A 中的所有内容,并且可以搜索和选择。

有没有办法将整个页面的内容存储在变量中? 是不是很简单\newcommand? 那么我稍后如何调用它并将其缩小到 B 页上?

答案1

atbegshi可用于捕获正在发送的页面。下面是我捕获的,\AtBeginShipoutBox\mysavedpage以后使用:

enter image description here

\documentclass{article}
\usepackage{atbegshi,graphicx,lipsum}
\newsavebox{\mysavedpage}
\begin{document}

% Capture the page being shipped out next
\AtBeginShipoutNext{%
  \global\setbox\mysavedpage=\copy\AtBeginShipoutBox}%

\section{A section}
\lipsum[1]
\begin{center}
  \includegraphics[height=5\baselineskip]{example-image}
\end{center}
\lipsum[2-5]

% Print captured page
\framebox{%
  \resizebox{.5\linewidth}{!}{%
    \usebox{\mysavedpage}}}

\end{document}

您可能需要尝试调整框内的长度,因为它不包含整页内容......仅包含从左上角推送到页面的内容。

答案2

这是一个使用answers包并基于write18编译的解决方案。

编辑:更新这个主文件应该用 (pdf 或 xe)latex 和选项 编译--enable-write18。这里没有输出,但将创建 2 个文件mtafile.tex和,mtBfile.tex并用 pdflatex 编译,输出mtafile.pdfmtBfile.pdf

\documentclass{article}
\usepackage{answers}
\Newassociation{xxx}{yyy}{page}

% contents of the page 

\Opensolutionfile{page}[mtfile]
\begin{Filesave}{page}
\section{Foo}
\lipsum[1]
\includegraphics[height=3cm]{example-image-a}
\subsection{Barbar}
\lipsum[1]
\end{Filesave}
\Closesolutionfile{page}

%  file A produce normal page A

\Opensolutionfile{page}[mtAfile]
\begin{Filesave}{page}
\documentclass{article}
\usepackage{lipsum,mwe}

\begin{document}
\input{mtfile}
\end{document}
\end{Filesave}
\Closesolutionfile{page}

%  file B produce normal page A and small image of A, boxed just for example

\Opensolutionfile{page}[mtBfile]
\begin{Filesave}{page}
\documentclass{article}
\usepackage{lipsum,mwe}
\begin{document}
\input{mtfile}
\clearpage
\fbox{\includegraphics[scale=.5]{mtAfile}}
\end{document}
\end{Filesave}
\Closesolutionfile{page}

\begin{document}
\immediate\write18{pdflatex mtAfile.tex}
\immediate\write18{pdflatex mtBfile.tex}
\end{document}

如果你愿意,你可以使用

\immediate\write18{xelatex mtAfile.tex}
\immediate\write18{xelatex mtBfile.tex}

相关内容