我想对每个部分的参考文献进行编号,并在前面加上该部分的编号。但是,我需要在另一个小节中引用某个部分的参考文献,但我的解决方案不允许这样做。事实上,代码如下:
\documentclass{article}
\pagestyle{empty}
\usepackage{filecontents}
\begin{filecontents*}{test.bib}
@article{A1,
keywords = {articles},
title={First Paper},
author={Green},
journal={Journal 1},
note={based on \cite{C2}},
year={2014}
}
@article{A2,
keywords = {articles},
title={Second paper},
author={Smith},
journal={Journal 2},
year={2013}
}
@article{C1,
keywords = {conferences},
title={First Communication},
author={Jack},
journal={Conference 1},
year={2012}
}
@article{C2,
keywords = {conferences},
title={Second Communication},
author={John},
journal={Conference 2},
year={2011}
}
\end{filecontents*}
\usepackage[
backend=biber,
defernumbers=true,
citestyle=numeric,
refsection=section
]{biblatex}
\DeclareFieldFormat{labelnumber}{\mkbibsecnum{#1}}
\newrobustcmd{\mkbibsecnum}[1]{\thesection-#1\relax}
\addbibresource{test.bib}
\begin{document}
\section{Articles}
\nocite{*}
\printbibliography[
title={Articles},
heading=none,
keyword=articles,
resetnumbers=true
]
\section{Conferences}
\nocite{*}
\printbibliography[
title={Conferences},
heading=none,
keyword=conferences,
resetnumbers=true
]
\end{document}
产生(我使用粗体表示问题所在):
1 篇文章
[1-1] Green.“第一篇论文”. 见:期刊 1(2014 年)。根据[1-4]
[1-2] Smith. “第二篇论文”. 刊于:期刊 2 (2013).
2 次会议
[2-1] 杰克。“第一次沟通”。见:第 1 次会议(2012 年)。
[2-2] 约翰。“第二次沟通”。见:第 2 次会议(2011 年)。
我希望第一行是:
[1-1] Green.“第一篇论文”. 见:期刊 1(2014 年)。基于[2-2]。
欢迎任何帮助。
答案1
这里有一个使用 latex crossref 机制来定义书目参考标签的技巧。
诀窍是重新定义如何处理参考书目(使用 提供的功能biblatex
)。要重新定义它,我们使用enumitem
,它允许我们指定标签和参考文献的格式。我们还必须\cite
相应地重新定义。
\usepackage{enumitem}
\usepackage[
backend=biber,
defernumbers=true,
citestyle=numeric,
refsegment=section
]{biblatex}
\DeclareCiteCommand{\cite}
[\mkbibbrackets]
{}
{\ref{\thefield{entrykey}}}
{\addcomma}
{\iffieldundef{postnote}{}{\addcomma\addspace\printfield{postnote}}}
\defbibenvironment{bibliography}
{\begin{enumerate}[label={[\thesection-\arabic*]},ref=\thesection-\arabic*]}
{\end{enumerate}}
{\item\label{\thefield{entrykey}}}
\addbibresource{test.bib}
\begin{document}
\section{Articles}\label{sec:article}
\nocite{*}
\printbibliography[
title={Articles},
heading=none,
keyword=articles,
resetnumbers=true,
]
\section{Conferences}\label{sec:conf}
\nocite{*}
\printbibliography[
title={Conferences},
heading=none,
keyword=conferences,
resetnumbers=true,
]
\end{document}