ConTeXt:让出版物清单尊重当前较窄的边距

ConTeXt:让出版物清单尊重当前较窄的边距

似乎使用 放置参考书目\placelistofpublications不尊重 设置的当前边距\startnarrower。我似乎找不到合适的变量来插入列表的边距选项(\leftmargindistance不起作用),我无法理解源代码spac-hor.mkiv。有没有办法将当前缩小的边距输入\placelistofpublications

\startbuffer[ref]
@article{work,
  author = {Last, First},
  title = {Fancy title},
  journal = {Journal},
  year = {2000},
  month = {1},
  volume = {1}
}
\stopbuffer

\usebtxdataset[ref.buffer]
\setupbtxrendering[default][numbering=no]

\startsetups btx:default:list:article
\btxflush{title}...
\stopsetups

\starttext
\definenarrower[test][left=4cm,default=left]
\starttest
Test \cite[work] % Indented 4cm

\setupbtxlist[margin=\leftmargindistance]
\placelistofpublications % Not indented sufficiently...

Test % Indented 4cm
\stoptest
\stoptext

这个问题似乎类似于我怎样才能让 TABLE 适应 ConTeXt 中较窄的环境?\dontleavehmode,但之前的简单添加\placelistofpublications似乎没有起作用......

答案1

有两个问题导致您的代码无法运行。

  1. \leftmargindistance是错误的维度。存储“margin”当前值的维度是\leftskip。它之所以这样命名是因为历史原因(该名称来自 Plain TeX)。

  2. \placelistofpublications包含\forgetall,因此 的值\leftskip被重置为零。因此,您需要告诉 ConTeXt\leftskip在调用 时使用 的值,而不是在 内使用\setupbtxlist的值时。这可以通过添加 来实现。margin\placepublications\expanded

因此,以下示例有效:

\startbuffer[ref]
@article{work,
  author = {Last, First},
  title = {Fancy title},
  journal = {Journal},
  year = {2000},
  month = {1},
  volume = {1}
}
\stopbuffer

\usebtxdataset[ref.buffer]
\setupbtxrendering[default][numbering=no]

\startsetups btx:default:list:article
\btxflush{title}...
\stopsetups

\starttext
\definenarrower[test][left=4cm,default=left]

\unprotect
\starttest
Test \cite[work] % Indented 4cm
\expanded{\setupbtxlist[margin=\the\leftskip]}
\placelistofpublications % Not indented sufficiently...

Test % Indented 4cm
\stoptest
\stoptext

相关内容