这是一个不常见的请求。假设我有一页,即 A 页。它的尺寸为 x 英寸 * y 英寸。在另一页,即 B 页上,我想将页面缩小到一半大小(0.5 x 英寸 * 0.5 y 英寸),以用作图形/插图。我希望它们相互关联,这样如果我更改 A 的内容,B 也会打印相同的更改(意味着 B 无需复制粘贴)。请参阅以下插图(不是用 LaTeX 生成的,因为我不知道如何生成):
请注意,页面 B 上的迷你页面 A 不仅仅是一张图片,而且还将编译页面 A 中的所有内容,并且可以搜索和选择。
有没有办法将整个页面的内容存储在变量中? 是不是很简单\newcommand
? 那么我稍后如何调用它并将其缩小到 B 页上?
答案1
atbegshi
可用于捕获正在发送的页面。下面是我捕获的,\AtBeginShipoutBox
供\mysavedpage
以后使用:
\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.pdf
和mtBfile.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}