这可能是愚蠢或明显的,但我正在学习制作sty文件,我一直在修改beamerposter项目中的一些代码。无论如何,我有这个:
\def\postercolumn#1
{\begin{column}{#1\textwidth}
\begin{beamercolorbox}[center,wd=\textwidth]{postercolumn}
\begin{minipage}[T]{.95\textwidth}
%\parbox[t][\columnheight]{\textwidth}
}
\def\endpostercolumn
{
\end{minipage}
\end{beamercolorbox}
\end{column}
}
显然,\ parbox命令已被注释掉,但我希望它从那里开始并以结束块结束。实际上,我想要这个:
\def\postercolumn#1
{\begin{column}{#1\textwidth}
\begin{beamercolorbox}[center,wd=\textwidth]{postercolumn}
\begin{minipage}[T]{.95\textwidth}
\parbox[t][\columnheight]{\textwidth}{
}
\def\endpostercolumn
{
}
\end{minipage}
\end{beamercolorbox}
\end{column}
}
但很自然,这不起作用,因为编译器感到困惑并认为\ endpostercolumn部分正在关闭。是否有一些明显的方法来解决这个问题?
谢谢。
答案 0 :(得分:2)
您可以尝试\bgroup
和\egroup
代替{
和}
。但不确定。
\bgroup
\let
为{
,因此它是隐式 {
。因此,在进入TeX的“胃”之前,不应将其视为额外的分组命令。同样关于\egroup
。
编辑:我使用\parbox
进行了尝试,似乎无法正常工作(因为\parbox
似乎过早地扩展了令牌)。使用\vtop
可以:
\documentclass{minimal}
\newlength\columnheight \columnheight=5cm % needed to define \columnheight,
% don't have it here
\def\postercolumn{
\leavevmode
\vtop to \columnheight\bgroup
\hsize.5\textwidth
\noindent
\ignorespaces
}
\def\endpostercolumn{
\egroup
}
\begin{document}
\begin{postercolumn}
hello world hello world hello world hello world
hello world hello world hello world hello world
\end{postercolumn}
\end{document}
似乎这就是你需要的。
修改:当然,您需要\hsize\textwidth
而不是\hsize.5\textwidth
答案 1 :(得分:0)
您可以使用\parbox
环境:
minipage
\begin{minipage}[t]{\textwidth}
% ...
\end{minipage}
% If you want to explicitly define the height:
\begin{minipage}[t][\columnheight]{\textwidth}
% ...
\end{minipage}
minipage
环境与\parbox
命令具有相同的选项:
\begin{minipage}[pos][height][inner-pos]{width}
% ... text ...
\end{minipage}
其中pos
是c
,t
或b
之一(分别为中心,顶部和底部); height
是所需的框高度,inner-pos
是c
,t
,b
或s
之一(适用于中心,顶部) ,底部和拉伸,分别);并且width
是所需的宽度。
如果为s
值选择inner-pos
,则会拉伸文本以填充框中的垂直空间(段落之间会添加额外的空格)。如果您选择不指定inner-pos
,则会将其设置为与pos
相同。
我没有用你的代码对它进行测试,但它应该可行。 (我之前在定义新环境时使用过它。)