
我正在使用 biber 並想在 tikzpicture 中引用參考文獻。我跟著這個回答描述如何使用 bibtex 做到這一點並且它工作得很好,但是當切換到使用 biber 時,它不再工作了:
\documentclass{article}
\usepackage{tikz}
\usepackage[backend=biber]{biblatex}
\begin{document}
\begin{tikzpicture}[show/.style={circle,draw}]
\node[show] (newpaper) at (0,2)
[label=right:{This 2011 paper ...}]
{\cite{newpaper}};
\node[show] (oldpaper) at (0,0)
[label=right:{This paper came out in 1900 ...}]
{\cite{oldpaper}};
\draw[->] (oldpaper) -- (newpaper);
\end{tikzpicture}
%\bibliographystyle{amsplain}
\begin{thebibliography}{10}
\bibitem{newerpaper}B. Becker, \emph{Even Newer Stuff}, 2012.
\bibitem{newpaper}C. Charles, \emph{New Stuff}, 2011.
\bibitem{oldpaper}H. Huckley, \emph{Old Stuff}, 1900.
\end{thebibliography}
\end{document}
有誰知道一個解決方案,而我不必切換到使用 bibtex?
更新:
正如下面幾位指出的,我發布的原始程式碼很容易修復。我發現的實際錯誤是由於我的 LaTeX 程式碼較大而導致的,我發現了這個問題。這是存在問題的更新程式碼:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{external}
\tikzexternalize[prefix=fig/]
\usepackage[backend=biber]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{newerpaper,
author={B. Becker},
title={Even Newer Stuff},
date={2012}
}
@book{newpaper,
author={C. Charles},
title={New Stuff},
date={2011}
}
@book{oldpaper,
author={H. Huckley},
title={Old Stuff},
date={1900}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
%\tikzexternaldisable
\begin{tikzpicture}[show/.style={circle,draw}]
\node[show] (newpaper) at (0,2)
[label=right:{This 2011 paper ...}]
{\cite{newpaper}};
\node[show] (oldpaper) at (0,0)
[label=right:{This paper came out in 1900 ...}]
{\cite{oldpaper}};
\draw[->] (oldpaper) -- (newpaper);
\end{tikzpicture}
%\tikzexternalenable
\printbibliography
\end{document}
問題出在\tikzexternalize[prefix=fig/]
命令上。我透過\tikzexternaldisable
在 tikzpicture 之前和\tikzexternalenable
tikzpicture 之後添加來解決這個問題。
答案1
正如評論中所建議的,您應該採用biblatex
處理參考書目的方式,而不是手動進行。例如:
\documentclass{article}
\usepackage{tikz}
\usepackage[backend=biber]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{newerpaper,
author={B. Becker},
title={Even Newer Stuff},
date={2012}
}
@book{newpaper,
author={C. Charles},
title={New Stuff},
date={2011}
}
@book{oldpaper,
author={H. Huckley},
title={Old Stuff},
date={1900}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\begin{tikzpicture}[show/.style={circle,draw}]
\node[show] (newpaper) at (0,2)
[label=right:{This 2011 paper ...}]
{\cite{newpaper}};
\node[show] (oldpaper) at (0,0)
[label=right:{This paper came out in 1900 ...}]
{\cite{oldpaper}};
\draw[->] (oldpaper) -- (newpaper);
\end{tikzpicture}
\printbibliography
\end{document}
其產生:
編輯:事實證明,這個問題本質上是biblatex
/的正確使用問題之一biber
,與 TikZ 關係不大,因此列出入門者清單biblatex
可能會很方便:
- biblatex 簡而言之(針對初學者)(Alan Munn 建議的連結)
- 切換到 biblatex 需要做什麼
- bibtex 和 biblatex 有什麼不同?
biblatex
的文檔