对于简答题测验,我喜欢在右边距提供一个与问题相同编号的答案空白:
在 pdfLaTeX 中我使用以下方法执行此操作newcommand
:
\newcommand{\ansblank}{\leavevmode\marginpar{\labelenumi\hrulefill\raggedright\par}
然后在enumerate
环境中:
\item\ansblank blah blah
在 ConTeXt MKIV 中我可以做到(感谢 Marco):
\definemargindata [mymarginrule] [width=3.5cm,location=right,]
\define\ansblank
{\inright{\getnumber[itemgroup:itemize]. \thinrules[n=1]}}
我的问题是我想在 ConTeXt MKII 中执行此操作。为什么?Euler 字体在 MKIV(通过 MacTeX 的 TeXLive 2012)中对我来说不起作用,而且我无法跟上 MKIV 的变化。我想使用 ConTeXt,因为它具有 METAPOST 集成和增强功能。
以下行:
\define\ansblank{\inright\thinrule}
在 MKII 中有效,但只在右侧空白处显示一行(显然)。有\getnumber
适用于 MKII 的吗?
抱歉,我不允许在原始帖子中上传输出图像(现在仍然不能。)这应该显示所需的内容:
1) Write the prime factors of 1001 1) ___________
(在 mkiv 中使用 NeoEuler 可能是另一个线程;我已经遇到了一些麻烦。)
答案1
MkII有一个\getnumber
,但内部项目化不是使用number
MkII 中的 s 实现的,而是使用 s 实现的counter
。因此,您必须明确将当前项目计数器转换为当前项目转换(以便解决方案适用于\startitemize[a]
等)。
第二个区别是 MkII 没有margindata
。由于您不需要控制边距内容的堆叠( 的主要功能)margindata
,而只是希望边距内容在调用它的同一行上刷新,因此任何更简单的方法margin<something>
都可以工作。在下面的示例中,我使用marginline
在调用它的同一行上刷新的方法。
与 不同margindata
,marginline
未在 ; 内设置frame
,因此您需要将内容包装在 中frame
(以获取\vbox
; 以确保 可以正常thinrules
工作)。
通过这些改变,Marco 的原始解决方案转换为 MkII 如下:
\setuplayout[rightmargin=3cm, width=fit, backspace=1cm, cutspace=3.2cm]
\definemarginline [mymarginrule] [location=right, width=\rightmarginwidth, distance=\rightmargindistance]
\defineframed
[marginframed]
[struct=yes,
offset=overlay,
frame=off,
location=low,
width=\rightmarginwidth,
align=flushleft]
\define\myrules
{\mymarginrule{\marginframed{\convertnumber\currentitemsymbol\currentitemnumber. \thinrules[n=1] }}}
\setupitemgroup [itemize] [a]
\setupitemgroup [itemize] [right=\myrules]
\starttext
\startitemize
\startitem \input knuth \stopitem
\startitem \input ward \stopitem
\stopitemize
\stoptext
这使