我想在我的 ConTeXt 演示中模拟 beamer 的中心框架行为。感谢这个帖子,我弄清楚了如何让我的(子)部分标题居中。我还在为主标题使用修饰。但是,我的主要文本没有垂直居中。今天,我意识到我可以使用自定义框架环境。
以下是我现在获取垂直居中的演示文稿的方法(所有设置都在一个环境中,为了方便起见,我在 MWE 中传递了相关项目):
\setuppapersize[S5]
\setupbodyfont[18pt]
\setuplayout[topspace=1cm,backspace=1.5cm,
width=14.5cm,height=11cm,%margin=0cm,
footer=0cm,header=0cm]
\definelayout[titre][topspace=0cm,backspace=1.5cm,
width=15cm,height=11cm,
footer=0cm,header=0cm]
\definemakeup[titre]
\setuphead[title][
alternative=middle,%titre centré sur la ligne
before={\leavevmode \vfill},after={\vfill \page},
style=\tfd]
\setuphead[section][align=lohi,
before={\page\leavevmode \vfill},after={\vfill},
style=\tfc,conversion=I,
numbercommand=\groupedcommand{}{~)},%) après le numéro
align={flushleft, nothyphenated, verytolerant}]
\defineframedtext
[Diapo]
[frame=no,
before={\page\leavevmode\vfill},after={\vfill}]
\starttext
\startmakeup[titre]
\starttitle[title={Un test}]
\stopmakeup
\startsection[title={Bonjour}]
\startDiapo
Hello world!
\stopDiapo
\stopsection
\stoptitle
\stoptext
我的问题是:如何才能最小化这些设置?特别是:
- 有没有什么方法可以让我的文本居中而不加框架(
\start/stopDiapo
)? - 我找不到任何提供垂直居中布局的全局命令。有办法吗?
答案1
化妆环境
使每个框架的内容居中的最佳方法是使用环境makeup
。使用top
和bottom
可以控制文本的垂直对齐,使用align
键可以更改水平对齐。
\setuppapersize [S3] [S3,doublewide]
\showframe [page]
\setuparranging [2SIDE]
\starttext
First page
\startstandardmakeup [align=middle,pagestate=start,headerstate=start]
Second page
\stopstandardmakeup
\stoptext
章节标题
当您使用节标题的环境形式时,会获取额外的键以在每个节的内容之前和之后插入命令。
当您有一个没有内容的页眉(例如,标题页)时,您可以使用常规形式并将标题作为参数传递给命令。
\setuppapersize [S3] [S3,doublewide]
\showframe [page]
\setuparranging [2SIDE]
\define[1]\ShowKey
{\par
\leftaligned{\tttf [key: #1]}%
\par}
\setuphead
[subject]
[ before=\ShowKey{before},
after=\ShowKey{after},
beforesection=\ShowKey{beforesection},
insidesection=\ShowKey{insidesection},
aftersection=\ShowKey{aftersection}]
\setupheader [state=stop]
\starttext
\subject {First subject}
\page
\startsubject [title={Second subject}]
Subject content
\stopsubject
\stoptext
两种机制的结合
您可以将makeup
环境与节标题的环境形式相结合,并使用insidesection
和aftersection
键将每个节的内容居中。
\setuppapersize [S3]
\definehead [frametitle] [title]
\definehead [framesection] [section]
\definemakeup
[section]
[pagestate=start,
align=middle]
\definemakeup
[frame]
[pagestate=start,
align=middle]
\setuphead
[frametitle]
[align=middle,
before=\startsectionmakeup,
after=\stopsectionmakeup]
\setuphead
[framesection]
[align=middle,
before=\startsectionmakeup,
after=\stopsectionmakeup,
insidesection=\startframemakeup,
aftersection=\stopframemakeup]
\starttext
\frametitle{Un test}
\startframesection[title={Bonjour}]
Hello world!
\stopframesection
\stoptext