我正在尝试从Beamer
。我希望在每张打印纸上都有多个框架,并且我希望框架有边框,比如用细线制作的边框。为了节省墨水,我不是想要一个阴影背景。
我有两个问题需要解决。首先,如何为讲义中的框架创建边框?下面标记的代码部分边界创建边框,但它也会为不存在的框架创建边框。下面代码中标记的部分打印 8 张合 1 张允许我在每张纸上放置八个框架,但部分顶部框架不会打印(它们被切掉了)。如何在不改变打印机设置的情况下解决这个问题?
\documentclass[10pt,handout,mathserif]{beamer}
\usepackage{amsmath,amssymb,amsfonts,amsthm}
\usepackage{graphics}
\usepackage{color}
\usepackage{framed}
\usepackage{amsthm, array}
\usepackage{yhmath}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{pgfpages}
%
% Prints 8 on 1
\pgfpagesuselayout{8 on 1}[letterpaper,border shrink=1mm]
%
%
% Border
\pgfpageslogicalpageoptions{1}{border code=\pgfusepath{stroke}}
\pgfpageslogicalpageoptions{2}{border code=\pgfusepath{stroke}}
\pgfpageslogicalpageoptions{3}{border code=\pgfusepath{stroke}}
\pgfpageslogicalpageoptions{4}{border code=\pgfusepath{stroke}}
\pgfpageslogicalpageoptions{5}{border code=\pgfusepath{stroke}}
\pgfpageslogicalpageoptions{6}{border code=\pgfusepath{stroke}}
\pgfpageslogicalpageoptions{7}{border code=\pgfusepath{stroke}}
\pgfpageslogicalpageoptions{8}{border code=\pgfusepath{stroke}}
%
%
\begin{document}
%Stuff goes here.
\end{document}
答案1
对于讲义,您可以注释掉所有主题修改并保留主题default
,也可以使用命令指定不同的情况presentation
、等。对于框架边框,可以使用在特殊节点边框上绘制的 TikZ 矩形article
。这是一个简单的例子:handout
\mode{}
current page
\documentclass[10pt,handout,onlymath]{beamer}
\usepackage{tikz}
\usepackage{pgfpages}
\usefonttheme{serif}
\setbeamertemplate{background canvas}{
\tikz \draw (current page.north west) rectangle (current page.south east);
}
\pgfpagesuselayout{8 on 1}[letterpaper,border shrink=5mm]
\begin{document}
\foreach \x in {1,...,8} {\begin{frame}{Title \x}The frame number \x\end{frame}}
\end{document}
答案2
我用pgfpages
感谢我的beamer
演示文稿也是如此。我有一个布局,在每个框架周围都放置一个边框,因为我发现这样更容易在视觉上区分框架。我还注意到末尾空白页周围有一个框架,但直到现在才想到要修复它(尽管我同意把它们放在那里看起来不太好,尤其是因为边框有点厚——因为实现的原因)。然而,有人问这个问题是摆脱这种烦恼的一大动力。所以这里有一个解决方案。
我使用自定义布局,在每个页面周围添加边框,并允许页面缩小。不过,在添加边框之前,它会测试页面上是否真的有内容。如果没有,它就不会添加边框。
\documentclass[handout]{beamer}
\usepackage{pgffor}
\makeatletter
\def\strokeifnotempty{%
\expandafter\ifvoid\csname pgfpages@box@\the\pgf@cpn\endcsname
\let\@next=\relax
\else
\let\@next=\pgfstroke
\fi
\@next%
}
\makeatother
\mode<handout>
{
\usepackage{pgf}
\usepackage{pgfpages}
\pgfpagesdeclarelayout{8 on 1 boxed}
{
\edef\pgfpageoptionheight{\the\paperheight}
\edef\pgfpageoptionwidth{\the\paperwidth}
\edef\pgfpageoptionborder{0pt}
}
{
\pgfpagesphysicalpageoptions
{%
logical pages=8,%
physical height=\pgfpageoptionheight,%
physical width=\pgfpageoptionwidth%
}
\pgfpageslogicalpageoptions{1}
{%
border code=\pgfsetlinewidth{2pt}\strokeifnotempty,%
border shrink=\pgfpageoptionborder,%
resized width=.5\pgfphysicalwidth,%
resized height=.5\pgfphysicalheight,%
center=\pgfpoint{.25\pgfphysicalwidth}{.875\pgfphysicalheight}%
}%
\pgfpageslogicalpageoptions{2}
{%
border code=\pgfsetlinewidth{2pt}\strokeifnotempty,%
border shrink=\pgfpageoptionborder,%
resized width=.5\pgfphysicalwidth,%
resized height=.5\pgfphysicalheight,%
center=\pgfpoint{.75\pgfphysicalwidth}{.875\pgfphysicalheight}%
}%
\pgfpageslogicalpageoptions{3}
{%
border code=\pgfsetlinewidth{2pt}\strokeifnotempty,%
border shrink=\pgfpageoptionborder,%
resized width=.5\pgfphysicalwidth,%
resized height=.5\pgfphysicalheight,%
center=\pgfpoint{.25\pgfphysicalwidth}{.625\pgfphysicalheight}%
}%
\pgfpageslogicalpageoptions{4}
{%
border code=\pgfsetlinewidth{2pt}\strokeifnotempty,%
border shrink=\pgfpageoptionborder,%
resized width=.5\pgfphysicalwidth,%
resized height=.5\pgfphysicalheight,%
center=\pgfpoint{.75\pgfphysicalwidth}{.625\pgfphysicalheight}%
}%
\pgfpageslogicalpageoptions{5}
{%
border code=\pgfsetlinewidth{2pt}\strokeifnotempty,%
border shrink=\pgfpageoptionborder,%
resized width=.5\pgfphysicalwidth,%
resized height=.5\pgfphysicalheight,%
center=\pgfpoint{.25\pgfphysicalwidth}{.375\pgfphysicalheight}%
}%
\pgfpageslogicalpageoptions{6}
{%
border code=\pgfsetlinewidth{2pt}\strokeifnotempty,%
border shrink=\pgfpageoptionborder,%
resized width=.5\pgfphysicalwidth,%
resized height=.5\pgfphysicalheight,%
center=\pgfpoint{.75\pgfphysicalwidth}{.375\pgfphysicalheight}%
}%
\pgfpageslogicalpageoptions{7}
{%
border code=\pgfsetlinewidth{2pt}\strokeifnotempty,%
border shrink=\pgfpageoptionborder,%
resized width=.5\pgfphysicalwidth,%
resized height=.5\pgfphysicalheight,%
center=\pgfpoint{.25\pgfphysicalwidth}{.125\pgfphysicalheight}%
}%
\pgfpageslogicalpageoptions{8}
{%
border code=\pgfsetlinewidth{2pt}\strokeifnotempty,%
border shrink=\pgfpageoptionborder,%
resized width=.5\pgfphysicalwidth,%
resized height=.5\pgfphysicalheight,%
center=\pgfpoint{.75\pgfphysicalwidth}{.125\pgfphysicalheight}%
}%
}
\IfFileExists{\jobname.aux}{
\pgfpagesuselayout{8 on 1 boxed}[a4paper, border shrink=5mm]
\nofiles
}{}
}
\begin{document}
\foreach \k in {1,...,5} {
\begin{frame}
Frame \k
\end{frame}}
\end{document}
该\IfFileExists
位是为了避免 Daniel 提到的干扰。第一次编译时,它不会进行多页布局,但会写入辅助文件。在后续运行中,它会进行多页布局,但不会写入辅助文件。这有助于绝对定位和标签等。
以下是上述操作的输出:
答案3
我更喜欢不在演示源本身中弄乱pgfpages
及其设置,而是让外部工具(如)pdfnup
生成我需要的(通常是各种)带或不带边框、距离、缩放比例的 x-up 版本:
\documentclass[10pt,handout,onlymath]{beamer}
\usepackage{pgffor}
\usefonttheme{serif}
\begin{document}
\foreach \x in {1,...,7} {\begin{frame}{Title \x}The frame number \x\end{frame}}
\end{document}
如果你使用以下命令进行编译:
pdflatex presentation.tex
pdfnup --no-landscape --nup 2x4 --frame true --no-tidy --delta '5mm 5mm' --scale 0.95 presentation.pdf
结果将是presentation-nup.pdf
如下所示的文件:
这种方法的优点是它不会干扰影响 shipout 级别的其他 LaTeX 包。textpos
例如,与 不兼容pgfpages
,即使 beamer 用户指南中提到它是实现绝对定位的方法。