似乎使用 放置参考书目\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
有两个问题导致您的代码无法运行。
\leftmargindistance
是错误的维度。存储“margin”当前值的维度是\leftskip
。它之所以这样命名是因为历史原因(该名称来自 Plain TeX)。\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