![在引用前自动插入段落](https://linux22.com/image/472093/%E5%9C%A8%E5%BC%95%E7%94%A8%E5%89%8D%E8%87%AA%E5%8A%A8%E6%8F%92%E5%85%A5%E6%AE%B5%E8%90%BD.png)
对于样式文件,我想在引用之前自动生成致谢段落/文本部分(基于用户提供的宏设置的一些选项)。该方法应该适用于和bibtex
。biblatex
如何做到这一点?
当使用 bibtex 时,我可以通过以下方式实现此目的thebibliography
:
\BeforeBeginEnvironment{thebibliography}{%
\section{Acknowledgements}%
Example text.%
}
这不适用于 biblatex。我尝试过修补\printbibliography
\pretocmd\printbibliography{%
\section{Acknowledgements}%
Example text.%
}{}{}%
但这不起作用。有没有简单/优雅的解决方案?
++++ 更新以提供 MWE
抱歉没有提供 MWE。假设有一个 template.bib 包含一个引用:
@article{RSA78,
author = {Ronald L. Rivest and Adi Shamir and Leonard M. Adleman},
title = {A Method for Obtaining Digital Signatures and Public-Key Cryptosystems},
pages = {120--126},
year = {1978},
journal = {Communications of the ACM},
volume = {21},
number = {2},
publisher = {ACM New York, NY, USA},
doi = {10.1145/359340.359342},
}
然后我想在显示参考文献之前自动插入一个段落/部分(无需作者在其终端修改命令)。这是一个 MWE:
\documentclass{article}
\begin{document}
This is an example citation~\cite{RSA78}.
\bibliographystyle{alphaurl}
\bibliography{template}
\end{document}
当使用 Bibtex 时,我可以使用以下方法实现此目的:
\documentclass{article}
\usepackage{etoolbox}
\BeforeBeginEnvironment{thebibliography}{%
\section*{Acknowledgements}%
Section text.%
}
\begin{document}
This is an example citation~\cite{RSA78}.
\bibliographystyle{alphaurl}
\bibliography{template}
\end{document}
如何使用 biblatex / biber 做到这一点?MWE:
\documentclass{article}
\usepackage{biblatex}
\addbibresource{template.bib}
\begin{document}
This is an example citation~\cite{RSA78}.
\printbibliography
\end{document}
使用注释选项并\printbibliography
不能达到我想要的效果。
答案1
biblatex
已经有了这种插入的基础架构,因此无需重新定义内部结构即可。即,选项prenote
,\printbibliography
允许您选择用定义的 bibnote \defbibnote
。您可以在调用时设置\printbibliography
,也可以使用设置全局默认值\DeclarePrintbibliographyDefaults
,具体取决于您的实际用例。在示例中,我将设置prenote
为默认值,并将设置title
为本地默认值,因为这似乎更有意义:
\documentclass{article}
\usepackage{biblatex}
\addbibresource{template.bib}
\defbibnote{myprenote}{Section text.}
\DeclarePrintbibliographyDefaults{prenote=myprenote}
\begin{document}
This is an example citation~\cite{RSA78}.
\printbibliography[title=Acknowledgements]
\end{document}
编辑:正如评论中澄清的那样(但评论后来被编辑了……),实际上想要的是标题本身之前的内容。为此,您可以设置\defbibheading
:
\documentclass{article}
\usepackage{biblatex}
\addbibresource{template.bib}
\defbibheading{myheading}[\bibname]{%
\section*{Acknowledgements}%
Section text.%
\section*{#1}%
\markboth{#1}{#1}}
\DeclarePrintbibliographyDefaults{heading=myheading}
\begin{document}
This is an example citation~\cite{RSA78}.
\printbibliography
\end{document}