为 Start-Stop 提供参数

为 Start-Stop 提供参数

主要是为了这样做,我正在用 ConTeXt 写一个演示文稿。我认为定义开始-停止是分割幻灯片的好方法。所以我有类似的东西:

\definestartstop[Slide][after={\break}]
...
\startSlide
  \subject{Title}
  \subsubject{Subtitle}
\stopSlide

我的问题是,鉴于每张幻灯片都有一个标题和一个副标题,有没有办法将\subject和包装\subsubject在中\definestartstop并在开始-停止时提供值?

我还没有找到任何与此相关的内容,而且我知道 start-stop 不接受参数,那么你该如何做这样的事情呢?如果我处理问题的方式不对,那么 ConTeXt 的方法是什么?

答案1

我建议简单地使用幻灯片的内置分段宏。

使用 ,\definehead您可以创建新的分段命令,这些命令可以单独设置样式并根据需要修改行为。如果您使用 MkIV 分段样式,则可以提供第二个参数,该参数可以通过 访问 \structureuservariable{…}。这是一个非常简单的幻灯片模板,演示了该功能。

\useMPlibrary     [dum]  %% only for the screenshot
\setuppapersize   [S6]
\setupbodyfont    [sans,18pt]
\setupheadertexts [{\getmarking [slide] — \getmarking [subtitle]}]
\setupheader      [style=bigbodyfont]
\definemarking    [subtitle]

\setuplayout
  [height=.8\paperheight,
   width=middle,
   topspace=.15\paperwidth]

\definehead
  [slide] [subsection]
  [page=yes, placehead=empty,insidesection=\doSubtitle]

\starttexdefinition doSubtitle
  \marking [subtitle] {\structureuservariable{subtitle}}
\stoptexdefinition

\starttext

  \startslide [title=Foo] [subtitle=a subtitle]
    \input ward
  \stopslide

  \startslide [title=Bar] [subtitle=another subtitle]
    \placesidebyside
      {\externalfigure [dummy] [width=.5\textwidth]}
      {\externalfigure [dummy] [width=.5\textwidth]}
  \stopslide

\stoptext

SS1 SS2

还可以看看 Aditya 的一步一步的指导教程使用 ConTeXt 创建幻灯片。

实际回答您的问题:您可以使用 \dosingleempty一个参数\dodoubleempty、两个参数等来创建带有参数的命令。这是一个宏的示例\TwoArgs,它仅在参数周围打印括号。

\def\TwoArgs
  {\dodoubleempty\doTwoArgs}

\def\doTwoArgs[#1][#2]%%
  {(#1) (#2)}

更多信息wiki - 带有可选参数的命令

相关内容