当使用下面显示的项目文件时,生成的链接\cite[…]
显示为链接,但是当我单击它们时什么也没有发生。
但当\completepublications[…]
直接写成主文本,一切都按预期进行。
我的项目有点复杂,所以我想使用单独的组件文件并将它们包含在主文件中。但是如何使链接起作用?
(这是一个错误吗?)
主文本:
\project test-project
\setupinteraction[state=start]
\setupbibtex[database={literature}]
\setuppublications[refcommand=short, numbering=short]
\startproduct test-product
\component a-chapter
\component bibliography % does not work
%\completepublications[criterium=text] % this works
\stopproduct
章节.tex:
\startcomponent a-chapter
\chapter{A Chapter}
Some text. \cite[birche2012]
\stopcomponent
书目.tex:
\startcomponent bibliography
\completepublications[criterium=text]
\stopcomponent
文献资料:
@article{birche2012,
Title = {{Complete System Power Estimation Using Processor Performance Events}},
Author = {W. Lloyd Birche and Lizy K. John},
Journal = {IEEE TRANSACTIONS ON COMPUTERS},
Month = {4},
Number = {4},
Pages = {563-577},
Volume = {61},
Year = {2012}
}
上下文版本是2012.05.30 11:26。
答案1
这是 ConTeXt 核心中的一个错误,自 版本起已修复2013.08.06 15:50
。您的示例在当前 ConTeXt 中运行良好。
这不是参考书目的问题,而是组件引用的一般问题。
答案2
只是为了完整性:我必须使用当前稳定的版本(因为使用较新的 ConTeXt 版本时找不到 Charter 字体;可能是因为我使用的是独立 ConTeXt?),其中问题尚未解决。作为一种解决方法,我重新定义了项目命令,以便每个文件都可以保持不变:
% based on: http://tex.stackexchange.com/a/10454
\def\newlinecommand#1#2{%
\def#1{%
\begingroup%
\escapechar=`\\%
\catcode\endlinechar=\active%
\csname\string#1\endcsname%
}%
\begingroup%
\escapechar=`\\%
\lccode`\~=\endlinechar%
\lowercase{%
\expandafter\endgroup
\expandafter\def\csname\string#1\endcsname##1~%
}{\endgroup#2\space}%
}
\newlinecommand{\IgnoreRestOfLine}{}
\let\environment\input
\let\component\input
\def\startproduct{\starttext\IgnoreRestOfLine}
\def\stopproduct{\stoptext}
\let\startenvironment\IgnoreRestOfLine
\def\stopenvironment{}
\let\startcomponent\IgnoreRestOfLine
\def\stopcomponent{}
也许这可以做得更优雅,但就此目的而言,它工作得很好。当删除此代码片段并使用已修复问题的 ConTeXt 版本编译文档时,其余代码无需更改。