我想要一个规则,例如,其宽度为\paperwidth-\leftmargin-\rightmargin
。我尝试使用\dimexpr
,但显然我做错了,因为它不起作用。
\documentclass[t]{beamer}
%\usepackage{geometry}
\geometry{paperwidth=250mm,paperheight=190.5mm,left=0mm,right=0mm,top=0mm,bottom=0mm}
\setbeamersize{text margin left=10mm,text margin right=60mm}
\begin{document}
\begin{frame}
\rule{\dimexpr\paperwidth-\leftmargin-\rightmargin\relax}{50mm}% 180mm = 250mm - 10mm - 60mm
\end{frame}
\end{document}
答案1
您要查找的长度存储在宏\Gm@lmargin
(纸张左边距与文本区域左边框之间的距离) 和\Gm@rmargin
(文本区域右边框与纸张右边距之间的距离) 中,因此\paperwidth=\Gm@lmargin+\textwidth+\Gm@rmargin
。由于\Gm@...
是宏,您可以先定义一些长度以便轻松使用它们\dimexpr
(请参阅最后的注释):
\documentclass[t]{beamer}
\usepackage{lipsum}
\usepackage{geometry}
\geometry{paperwidth=250mm,paperheight=190.5mm,left=0mm,right=0mm,top=0mm,bottom=0mm}
\setbeamersize{text margin left=10mm,text margin right=60mm}
\makeatletter
\newlength\beamerleftmargin
\newlength\beamerrightmargin
\setlength\beamerleftmargin{\Gm@lmargin}
\setlength\beamerrightmargin{\Gm@rmargin}
\makeatother
\begin{document}
\begin{frame}
\textcolor{blue}{\rule{\textwidth}{3pt}}
\textcolor{red}{\rule{\dimexpr\paperwidth-\beamerleftmargin-\beamerrightmargin\relax}{3pt}}% 180mm = 250mm - 10mm - 60mm
\end{frame}
\end{document}
如果主题使用侧边栏,则必须考虑一些其他水平长度:\beamer@leftsidebar
存储\beamer@rightsidebar
侧边栏的(水平)尺寸,以及\beamer@leftmargin
存储 \beamer@rightmargin
侧边栏和文本之间的距离。
作为吉富布已经注意到his comment
定义两个新的长度寄存器不是强制性的,可以这样做
\def\beamerleftmargin{\dimexpr\Gm@lmargin\relax}
\def\beamerrightmargin{\dimexpr\Gm@rmargin\relax}