因此,我设置了与 Wiki 上的示例类似的同义词(此处为缩写)(并进行了扩展以供首次使用,如下所示这个帖子)。
\definesynonyms [abbreviation][abbreviations][\infull]
\setupsynonyms [synonymstyle=normal,textstyle=bold]
\def\ac#1{%
\ifcsname ac@firstused@#1\endcsname%
\csname #1\endcsname%
\else%
\csname #1\endcsname\margintext{\infull{#1}}%
\expandafter\def\csname ac@firstused@#1\endcsname{1}%
\fi%
}
\abbreviation{RE}{Regular Expression}
\starttext
\ac{RE}
\blank
\RE\ \infull{RE}
\blank
\ac{RE}
\stoptext
据我了解,它synonymstyle=normal
应该使缩写形式采用文本字体(事实上确实如此)并且textstyle=bold
应该使长文本(用\infull
)变为粗体(这不能按预期工作)。
如上所示,长文本不会变成粗体(如果是普通文本,在边距中会变成粗体,可能是由于边距默认值)。那么如何可靠地影响文本样式(以便边距和文本都具有相同的格式:用 指定的格式\setupsynonyms
)?
答案1
和\setupsynonyms[textstyle=bold]
将覆盖所有同义词的默认值。但是,strc-syn.mkiv具有以下定义:
\definesynonyms
[\v!abbreviation]
[\v!abbreviations]
[\infull]
\setupsynonyms
[\v!abbreviation]
[\c!textstyle=\v!capital]
因此,abbreviations
已设置为使用textstyle=capital
。因此,要覆盖此设置,您需要:
\setupsynonyms[abbreviation][synonymstyle=normal,textstyle=bold]
顺便说一句,ConTeXt 有一种在第一次使用时扩展同义词的机制:传递alternative=first
给definesynonym
或setupsynonym
。
\setupsynonyms[abbreviation]
[
alternative=first,
synonymstyle=normal,
textstyle=bold,
]
\abbreviation{RE}{Regular Expression}
\starttext
Consider a \RE\ \unknown. An \RE\ again.
\stoptext
这使
现在,您希望完整表格出现在页边距中。格式由以下代码控制strc-syn.mkiv
\startsetups[\??simplelistrenderings:\v!synonym:\v!first]
\fastsetup{\??simplelistrenderings::\v!synonym}
\doifelsecurrentsynonymshown \donothing {
\simplelistalternativeparameter\c!inbetween
\simplelistalternativeparameter\c!left
\fastsetup{\??simplelistrenderings::\v!text}
\simplelistalternativeparameter\c!right
}
\stopsetups
因此,(正如 Wolfgang 在下面的评论中解释的那样),一个选项是设置simplelistalternative的left
和键,以便在边距中排版文本:right
first
\define\FirstSynonymEntry{\dowithnextbox{\margintext{\unhbox\nextbox}}\hbox}
\setupsimplelistalternative
[first]
[
left=\FirstSynonymEntry\bgroup,
right=\egroup,
]
修改第一个渲染的另一种方法是,您可以定义自己的边距渲染:
\unprotect
\definesimplelistalternative
[\v!margin]
\startsetups[\??simplelistrenderings:\v!synonym:\v!margin]
\fastsetup{\??simplelistrenderings::\v!synonym}
\doifelsecurrentsynonymshown \donothing {
\margintext{\fastsetup{\??simplelistrenderings::\v!text}}
}
\stopsetups
\protect
\setupsynonyms[abbreviation]
[
alternative=margin,
synonymstyle=normal,
textstyle=bold,
]
\abbreviation{RE}{Regular Expression}
\setuplayout[cutspace=2in, backspace=2in, leftmargin=1.5in, width=fit]
\showframe
\starttext
Consider a \RE\ \unknown. An \RE\ again.
\stoptext
这使