使用项目组件文件时,\cite 生成的 PDF 链接不起作用

使用项目组件文件时,\cite 生成的 PDF 链接不起作用

当使用下面显示的项目文件时,生成的链接\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 版本编译文档时,其余代码无需更改。

相关内容