自定义引用键

自定义引用键

我正在准备一份 LaTeX 出版物清单,其中我想使用自定义键来区分论文类型。例如,如果我最初有:

  • [1] 期刊出版物 1
  • [2] 期刊出版物 2
  • [3] 会议出版物 1
  • [4] 会议出版物 2
  • [5] 研讨会出版物 1

我想把它变成类似这样的东西:

  • [J1] 期刊出版物 1
  • [J2] 期刊出版物 2
  • [C3] 会议出版物 1
  • [C4] 会议出版物 2
  • [W5] 研讨会出版物 1

当然,相同的键会出现在参考文献列表和正文中。

我找不到使用 LaTeX/BibTeX 实现此目的的简单方法。您有什么建议吗?

答案1

这是一个使用的解决方案biblatex(可能有更优雅的方式来定义新的\typeprefix宏。)

\documentclass{article}

\usepackage{biblatex}

\newcommand*{\typeprefix}{%
  \ifentrytype{article}{%
    A%
  }{%
    \ifentrytype{book}{%
      B%
    }{%
      O% "other"
    }%
  }%
}

\DeclareFieldFormat{labelnumber}{\typeprefix #1}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@article{A01,
  author = {Author, A.},
  year = {2001},
  title = {Alpha},
  journaltitle ={Journal Title},
}
@book{B02,
  author = {Buthor, B.},
  year = {2002},
  title = {Bravo},
  publisher = {Publisher},
  location = {Location},
}
@misc{C03,
  author = {Cuthor, C.},
  year = {2003},
  title = {Charlie},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}

Some text \autocite{A01,B02,C03}.

\printbibliography

\end{document}

enter image description here

答案2

以下是使用 biber 0.9.9 (beta)+biblatex1.7 执行类似操作的方法。将来(biblatex 2.x),您将能够定义自己的标签模板,因此这将很容易,但现在,您可以使用 biber 配置文件选项sourcemap在 biber 读取条目时更改它们:

<?xml version="1.0" encoding="UTF-8"?>
<config>
  <sourcemap>
    <maps datatype="bibtex" map_overwrite="1">
      <map>
        <map_step map_field_set="LABEL" map_origentrytype="1"/>
        <map_step map_field_source="LABEL" map_match="\A(.).+" map_replace="\u$1"/>
      </map>
    </maps>
  </sourcemap>
</config>

这将(假设 biblatex 选项style=alphabeticlabelalpha=true)将标签的 alpha 部分变成 entrytype 的第一个字母。显然,使用 match/replace 可以让您更好地控制格式。您可以从 SourceForge 获取 biber 0.9.9(测试版)(有一个小错误导致此示例无法在 0.9.8 中使用)。

相关内容