ConTeXt:相当于 \linewidth

ConTeXt:相当于 \linewidth

我正在考虑从 LaTeX 切换到 ConTeXt。我正在大量使用 LaTeX 来创建带有扩展版本的教学材料xsim。有很多东西我需要移植,其中之一是一个宏,它会生成许多线条作为学生的书写区域。在 LaTeX 中,我只需使用 TikZ 和 画一条线\linewidth,它会返回当前环境中的宽度(例如在itemize环境中)。我尝试使用 ConTeXt / MetaPost(fun) 重新创建相同的行为,并且它与 配合良好,\textwidth它会返回完整宽度,与当前环境无关。我在文档中找不到任何对 等效项的引用\linewidth。是否有这样的命令或可能性来获取当前环境的 x 位置?

这是一个最小的例子,我需要用\the\textwidth类似 的内容来替换它\the\linewidth。还有其他问题,比如分隔符前文本的对齐,但这是我以后可能会解决的问题。

\setuppapersize[A4] 
\setupbodyfont[modern,12pt] 

\starttext

\startuseMPgraphic{line}
draw ((0cm,0cm)--(\the\textwidth,0cm)) ;
\stopuseMPgraphic

\startitemize
  \item here we list the points,\break\useMPgraphic{line}
  \item one after the other.
\stopitemize
\useMPgraphic{line}

\stopchapter
\stoptext

答案1

欢迎来到本网站。您可以执行以下操作:

\startuseMPgraphic{line}
numeric hsize ; hsize = \the \ifzeropt\localhsize \hsize \else \localhsize \fi;

draw (0cm,0cm) -- (hsize,0cm);
\stopuseMPgraphic

但我认为你尝试做的事情更容易用 来完成fillinrules。我在下面给出了一个例子。在那里,我还删除了纸张的设置(默认为 A4)

\setupbodyfont[modern, 12pt] 

\starttext

\startitemize
  \item here we list the points,
  \fillinrules[n=2]
  \item one after the other.
\stopitemize
\fillinrules[n=3]

\stoptext

带线条的示例

您可以阅读更多关于fillinrules 这里

相关内容