我正在尝试制作我的第一个 LaTeX beamer 主题。该主题将是开源的。
为了促进和推动 LaTeX 的采用,我想提供一些具有特定布局的预制且可立即使用的“框架”。
我已经创建了一个文件“frames.tex”,它包含在我的主文件中。
我正在尝试创建 4 个基本框架布局 A、B、C 和 D。
布局 A 是水平分成两部分的框架,顶部是图片,底部是文本。图片必须占据整个页面宽度,高度必须是页面高度的一半。布局 B 相同,但顶部是文本,底部是图片。
布局 C 是垂直分成两部分的框架,左侧是图片,右侧是文本。图片必须占据整个页面的高度,宽度必须是页面的一半。布局 D 相同,但左侧是文本,右侧是图片。
到目前为止,我几乎成功获得了 A 和 C(B 和 D 尚未完成) 布局使用此代码工作:
\NewEnviron{FrameA}[3][]{%
\begin{frame}
\begin{columns}
\column{\paperwidth}
\includegraphics[width=\the\paperwidth, height=.5\paperheight]{src/afup/style/logo/bg1}
\begin{tikzpicture}
\node[shape=rectangle, text opacity=1,minimum height=.5\paperheight, minimum width=\paperwidth, anchor=south]{
\BODY
};
\end{tikzpicture}
\end{columns}
\end{frame}
}
\NewEnviron{FrameC}[3][]{%
\begin{frame}
\begin{columns}
\column{.5\paperwidth}
\includegraphics[width=.5\paperwidth, height=\paperheight]{src/afup/style/logo/bg1}
\column{.5\paperwidth}
\begin{tikzpicture}
\node[shape=rectangle, text opacity=1,minimum height=\paperheight, minimum width=.5\paperwidth, anchor=east]{
\BODY
};
\end{tikzpicture}
\end{columns}
\end{frame}
}
主 tex 文件(我删除了不相关的部分) 是:
\documentclass{beamer}
\input{frames}
\begin{document}
\begin{FrameA}
Some text here
\end{FrameA}
\begin{FrameB}
Some text here
\end{FrameB}
\end{document}
得到的 PDF 为frameA
:https://i.stack.imgur.com/6dHBU.jpg
得到的 PDF 为frameC
:https://i.stack.imgur.com/nUlI5.jpg
现在我的问题是:如何消除页面顶部的微小边距?
我尝试了很多方法,但都无法克服它。
你能帮忙吗?
答案1
您已经在使用 tikz 来定位您的文本,您也可以使用它来定位您的图像,从而避免多余的空间:
\documentclass{beamer}
\usepackage{environ}
\usepackage{tikz}
\NewEnviron{FrameA}[3][]{%
\begin{frame}[environment=FrameB]
\begin{tikzpicture}[remember picture, overlay,inner sep=0pt]
\node[anchor=north] at (current page.north) {\includegraphics[width=\paperwidth, height=.5\paperheight]{example-image-duck}};
\node[shape=rectangle, text opacity=1,minimum height=.5\paperheight, minimum width=\paperwidth, anchor=south] at (current page.south) {\BODY};
\end{tikzpicture}
\end{frame}
}
\NewEnviron{FrameB}[3][]{%
\begin{frame}[environment=FrameB]
\begin{tikzpicture}[remember picture, overlay,inner sep=0pt]
\node[anchor=west] at (current page.west) {\includegraphics[width=.5\paperwidth, height=\paperheight]{example-image-duck}};
\node[shape=rectangle, text opacity=1,minimum height=\paperheight, minimum width=.5\paperwidth, anchor=east] at (current page.east) {\BODY};
\end{tikzpicture}
\end{frame}
}
\begin{document}
\begin{FrameA}
Some text here
\end{FrameA}
\begin{FrameB}
Some text here
\end{FrameB}
\end{document}