按 BibTeX 键名引用

按 BibTeX 键名引用

我见过使用 BibTeX 键作为引用键,它非常接近我想要的,但并没有完全实现——首先,我无法让 biblatex 运行我的文档,其次

我想要实现的是显示参考列表,而不是参考编号(或作者年份对,但我使用supernatbib 样式)键,如\cite(key)

这部分是调试问题,因此有标签,但部分是因为我需要将一些现有工作移植到 word。我对这个要求没有影响,我已经编写了一些东西来解析 .tex(不包括方程式),让我拥有内联的引用键 - 因此我想获得一个参考文献部分,我可以将其复制到 word 文档中以供共享编辑。

编辑-有关 biblatex 的更多详细信息 我看到的错误是:

! LaTeX Error: Command \bibhang already defined.
           Or name \end... illegal, see p.192 of the manual.

如果我试图\usepackage{natbib}修复这个问题,我会破坏一些自定义引用命令我补充说。用一个简单的替换那些\cite就可以编译了。

上面链接的最佳答案没有多大帮助,生成了新的密钥,这就是为什么我之前没有花太多精力让它运行。

编辑2:以下编译,但生成新的密钥。

\documentclass[preview]{article} 
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{preview}
\usepackage[backend=bibtex,style=alphabetic,sorting=debug]{biblatex}
\usepackage{filecontents}


\begin{filecontents}{\jobname.bib}
@article{Jones_article1,
    author = {A. . Jones and C. D. Smith},
    title = {article1},
}
@article{Bloggs_article2,
    author = {E. F. Bloggs},
    title = {article title 2}
    journal = {Journal of stuff},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
foo\cite{Jones_article1} and bar\cite{Bloggs_article2}

\printbibliography
\end{document}

上述代码示例

编辑3:这无法运行:

\documentclass[preview]{article} 
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{preview}
\usepackage[backend=bibtex,natbib=true,style=alphabetic,sorting=debug]{biblatex}
\usepackage{filecontents}

\DeclareFieldFormat{labelalpha}{\thefield{entrykey}}\DeclareFieldFormat{extraal??pha}{}

\begin{filecontents}{\jobname.bib}
@article{Jones_article1,
    author = {A. . Jones and C. D. Smith},
    title = {article1},
}
@article{Bloggs_article2,
    author = {E. F. Bloggs},
    title = {article title 2}
    journal = {Journal of stuff},
}
\end{filecontents}
\addbibresource{\jobname.bib}

%citenumns provides the reference number for a citation, not superscripted or bracketed
\makeatletter
\newcommand*{\citenumns}[2][]{%
  \begingroup
  \let\NAT@mbox=\mbox
  \let\@cite\NAT@citenum
  \let\NAT@space\NAT@spacechar
  \let\NAT@super@kern\relax
  \renewcommand\NAT@open{}%
  \renewcommand\NAT@close{}%
  \cite[#1]{#2}%
  \endgroup
}
\makeatother

\begin{document}
foo\cite{Jones_article1} and bar ref. \citenumns{Bloggs_article2}

%\bibliographystyle(super)
\printbibliography
\end{document}

而不是给予

! LaTeX Error: \NAT@open undefined.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...

l.40 ...} and bar ref. \citenumns{Bloggs_article2}

答案1

如果您想要某些(但不是全部!)natbib功能,请将选项natbibnatbib=true(相同)添加到 的调用中biblatex

要更改结果列表中的键,您错过了\DeclareFieldFormat{labelalpha}{\thefield{entrykey}}\DeclareFieldFormat{extraal‌​pha}{}在 MWE 中添加。您的第二个 bib 条目中也缺少一个逗号。

您的宏\citenumbers不适用于biblatex

以下 MWE 应该运行并帮助您:

\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{Jones_article1,
    author = {A. . Jones and C. D. Smith},
    title = {article1},
}
@article{Bloggs_article2,
    author = {E. F. Bloggs},
    title = {article title 2},
    journal = {Journal of stuff},
}
\end{filecontents*}

\documentclass[preview]{article} 
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{preview}
\usepackage[%
  backend=bibtex
 ,style=alphabetic
 ,sorting=debug
 ,natbib             % to add some natbib functions, nou all!
]{biblatex}
% change key in bib list
\DeclareFieldFormat{labelalpha}{\thefield{entrykey}}\DeclareFieldFormat{extraalpha}{}

\addbibresource{\jobname.bib}


\begin{document}
foo~\cite{Jones_article1} and bar~\cite{Bloggs_article2}.

\printbibliography
\end{document} 

相关内容