biblatex:编译前使用 tex 文档中的字段值

biblatex:编译前使用 tex 文档中的字段值

我正在尝试创建一些出版物的时间表。由于每份出版物都包含有关其出版时间的信息,因此我想自动使用该信息将参考资料放在时间表上。

这是我目前的代码:

\documentclass{scrartcl}

\usepackage{chronology}
\usepackage[landscape]{geometry}
\usepackage[backend=biber]{biblatex}
\addbibresource{refs.bib}

\newcommand{\paperevent}[1]{%
    \event{\citeyear{#1}}{\textcite{#1}}%
}

\begin{document}

\begin{chronology}[5]{1960}{2013}{\textwidth}
    \paperevent{Miller1960}
\end{chronology}

\end{document}

您可能已经猜到了,这不起作用,可能是因为\citeyear在第一次 LaTeX 编译期间未知。我有什么办法可以使用 biblatex 宏来实现这一点吗?

错误目前听起来:

There were errors in your LaTeX source

./timeline.tex:15: Extra \else. [    \paperevent{Miller1960}]
./timeline.tex:15: Package PGF Math Error: Unknown operator `M' or `Mi' (in '(\citeyear {Miller1960}-1960)*\unit '). [    \paperevent{Miller1960}]

答案1

如何为事件定义自定义引用命令:

示例输出

\documentclass{scrartcl}

\usepackage{chronology}
\usepackage[landscape]{geometry}
\usepackage[backend=biber]{biblatex}
\addbibresource{refs.bib}

\DeclareCiteCommand{\eventcite}{}{\event{\thefield{year}}{\printnames{labelname},\space\printfield{year}}}{}{}

\begin{document}

\begin{chronology}[5]{1960}{2013}{\textwidth}
  \eventcite{Milnor:Morse}
\end{chronology}

\end{document}

包含refs.bib

@Book{Milnor:Morse,
  author =   {Milnor, J.},
  title =    {Morse theory},
  publisher =    {Princeton University Press},
  year =     1973,
  volume =   51,
  series =   {Annals of Mathematics Studies},
  address =  {Princeton, New Jersey},
}

您必须按照通常的pdflatex biber pdflatex编译顺序才能使其工作。代码假设年份字段包含一个简单的年份。

该命令用于\thefield{year}在第一个参数中直接获取年份。在第二个参数中,我们想要打印引文中的信息,因此\printnames{labelname}\printfield{year}是合适的。

相关内容