假设您有一个简短的文档(包括一个漂亮的标题),它只占据 DIN A4 页面的一小部分,如下例所示:
\documentclass[a4paper, 12pt]{article}
\usepackage[top=2cm,hmargin=2.2cm]{geometry}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[R]{\small \today}
\fancyhead[L]{\small header}
\fancyfoot[C]{}
\begin{document}
short text short text short text short text short
text short text short text short text short text short
text short text short text short text short text short
text short text short text short text short text short
text short text short text short text short text end of the text.
\end{document}
假设我想打印此文本 50 次。为了节省纸张,我会将其打印出来,然后使用复印机将此文本(包括精美的标题)多次复印到一张纸上。
现在我的问题是,是否有一种简单的 LaTeX 方法可以做到这一点,即在上面的例子中,在 DIN A4 纸上自动复制尽可能多的从花式标题到“文本结尾”的所有文本的副本?
答案1
我不知道完全自动化的方法,但可以通过最少的调整手动完成。
第一种方式:
a4paper
通过替换将页面高度降低到最小高度pagewidth=21cm,pageheight=4cm
(这里 21cm 是 A4 宽度,4cm 取决于文本内容和边距要求)。
\usepackage[top=2cm,hmargin=2.2cm,paperwidth=21cm,paperheight=4cm]{geometry}
然后创建第二个小型 LaTeX 文档,其中包含第一个使用页面的 PDF pdfpages
,并将其多次放置在一页上:
\documentclass[a4paper]{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[page={1,1,1,1,1,1,1},nup=1x7]{mainfile}
\end{document}
这会将第一个文档(mainfile.tex/.pdf
此处调用)放置在页面上七次。将的数量1,
和数量调整nup=1x
为适合一页的实际数量。
示例结果:
第二种方式:
您可以使用普通文本创建标题,以便它可以在页面上重复。表格在这里就足够了。将正文放入一个多列单元格中还可以防止文本内出现分页符。可以使用循环重复文本。调整 s\vspace
和重复次数以满足您的要求。
\documentclass[a4paper, 12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[pdftex]{graphicx}
\usepackage[top=2cm,hmargin=2.2cm]{geometry}
\pagestyle{empty}
\begin{document}
\newcount\num
\loop\ifnum\num<7
\par\noindent
\begin{tabular}{@{}l@{}r@{}}
\small \today & header \\
\hline\noalign{\vspace{.5cm}}
\multicolumn{2}{@{}p{\linewidth}@{}}{%
\hspace*{\parindent}% if par indent is required
short text short text short text short text short
text short text short text short text short text short
text short text short text short text short text short
text short text short text short text short text short
text short text short text short text short text end of the text
}
\end{tabular}
\par\vspace{1cm}%
\advance\num by 1
\repeat
\end{document}
答案2
如果您知道需要多少份文本,那么该软件包pgfmorepages
可以通过预定义的布局之一或定义新的布局来执行此操作。例如,要在 A4 纸上重复 A5 页面:
\documentclass[a5paper]{article}
%\url{https://tex.stackexchange.com/q/452197/86}
\usepackage{lipsum}
\usepackage{pgfmorepages}
\pgfmorepagesloadextralayouts
\pgfpagesuselayout{repeated 2-up}[a4paper,landscape]
\begin{document}
\lipsum[1-5]
\end{document}
其他答案中的布局需要新的布局,但这些并不难做到。
答案3
我发现另一个解决方案更简单,我希望将所有内容放在一个文件中,这样可以简化一切。使用 pdfpages 解决方案是不可能的。只需将要重复的文本定义为命令,使用 \newcommand{\repeatthis}{text},然后多次使用该命令即可。作为一个完整的示例,我使用此技术展示了 yahtzee 记分表的完整文件:
% yahtzee-scoresheet in \LaTeX
\documentclass[a4,12pt,landscape,pdftex]{standalone}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{array}%%%%%Extended, modernized version of tabular
\usepackage[misc]{ifsym}%%%%%\Cube{} command
%%%%% Defining commands for yatzee names:
\newcommand{\one}{\Cube{1}}
\newcommand{\two}{\Cube{2}}
\newcommand{\three}{\Cube{3}}
\newcommand{\four}{\Cube{4}}
\newcommand{\five}{\Cube{5}}
\newcommand{\six}{\Cube{6}}
\newcommand{\onepair}{\Cube{1}\Cube{1}}
\newcommand{\twopair}{\Cube{2}\Cube{2}~\Cube{3}\Cube{3}}
\newcommand{\thrice}{\Cube{3}\Cube{3}\Cube{3}}
\newcommand{\fourequal}{\Cube{4}\Cube{4}\Cube{4}\Cube{4}}
\newcommand{\house}{\onepair{}~\thrice}
\newcommand{\straight}{\Cube{1}\Cube{2}\Cube{3}\Cube{4}\Cube{5}}
\newcommand{\sstraight}{\Cube{2}\Cube{3}\Cube{4}\Cube{5}\Cube{6}}
\newcommand{\yatzee}{\Cube{6}\Cube{6}\Cube{6}\Cube{6}\Cube{6}}
\newcommand{\chance}{\textbf{sjanse}}
\newcommand{\bonus}{\textbf{bonus}}
\newcommand{\total}{\textbf{sum}}
\dimen0=0.6cm{} %%%%% To use within the tabular environment
\newcommand{\onesheet}{%%%%% The complete score sheet:
\begin{tabular}[t]{||l||p{\dimen0}|p{\dimen0}|p{\dimen0}|p{\dimen0}|p{\dimen0}|p{\dimen0}||}\hline \hline
& & & & & & \\ \hline
\one & & & & & & \\ \hline
\two & & & & & & \\ \hline
\three & & & & & & \\ \hline
\four & & & & & & \\ \hline
\five & & & & & & \\ \hline
\six & & & & & & \\ \hline \hline
\total & & & & & & \\ \hline
\bonus & & & & & & \\ \hline \hline
\onepair & & & & & & \\ \hline
\twopair & & & & & & \\ \hline
\thrice & & & & & & \\ \hline
\fourequal & & & & & & \\ \hline
\house & & & & & & \\ \hline
\straight & & & & & & \\ \hline
\sstraight & & & & & & \\ \hline
\yatzee & & & & & & \\ \hline
\chance & & & & & & \\ \hline \hline
\total & & & & & & \\ \hline \hline
\end{tabular}
}
\begin{document}
\onesheet \\[15mm]
\onesheet
\end{document}