我正在从 BibTeX 切换到 BibLaTeX/biber。我搜索了好久,但似乎找不到/搞清楚如何以特定方式设置引文样式,希望得到一些帮助。
我使用 tufte-latex 包,因此引文出现在页边空白处。我希望第一次出现的引文给出完整的引文,即作者、标题、出版商、年份,而该项目的其余引文仅给出数字引文,即作者 [引文编号]。
我目前的 biblatex 选项是:
\usepackage[
natbib=true,
bibstyle=numeric,
block=nbpar,
citestyle=numeric,
backend=biber
]{biblatex}
文本中有两种类型的引用,一种是作为其自己的边注出现的标准引用,另一种是出现在边注中的引用。为了适应这种情况,我使用 BibLaTeX 命令\textcite{}
来引用边注中的引用(给出“作者 [引用编号]”),并\autocite{}
使用自动引用来引用标准引用,其定义如下。
\renewcommand{\autocite}[1]{\sidenote{\textcite{#1}}}
但是同样,我想要的是有这种设置(或类似的设置),但每个引用的首次出现都提供完整的引用(作者、标题、出版物、年份等),其余部分则回到我当前拥有的数字版本。
这可能吗?
答案1
使用修改后的tufte-common.def
文件您可以tufte-latex
使用 创建文档biblatex
。限制是tufte-latex
修改脚注。因此,biblatex
诸如\smartcite
脚注内部和脚注检测等功能\iffootnote
可能无法按预期工作。大部分内容已在另一篇帖子。
textcite
至于引用样式,您可以通过对参考书目宏和进行一些编辑来实现大部分功能\smartcite
。这两者都在中定义numeric.cbx
。
\documentclass[nobib]{tufte-handout}
\usepackage{hyphenat}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=numeric,citetracker=true,autocite=footnote]{biblatex}
\makeatletter
% If not seen, avoid compact lists and print full citation
\renewbibmacro*{textcite}{%
\ifciteseen
{}
{\clearfield{namehash}}%
\iffieldequals{namehash}{\cbx@lasthash}
{\multicitedelim}
{\cbx@tempa
\ifciteseen
{\ifnameundef{labelname}
{\printfield[citetitle]{labeltitle}}
{\printnames{labelname}}}
{\usedriver
{\DeclareNameAlias{sortname}{default}%
\clearfield{pages}%
\clearfield{pagetotal}}
{\thefield{entrytype}}}%
\addspace\bibopenbracket}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
\usebibmacro{cite}%
\savefield{namehash}{\cbx@lasthash}%
\gdef\cbx@tempa{\bibclosebracket\multicitedelim}}
% Make \smartcite like \textcite
\DeclareCiteCommand{\smartcite}[\iffootnote\mkbibbrackets\mkbibfootnote]
{\let\cbx@tempa=\empty
\undef\cbx@lasthash}
{\usebibmacro{citeindex}%
\usebibmacro{textcite}}
{}
{\usebibmacro{postnote}%
\bibclosebracket}
\makeatother
\addbibresource{biblatex-examples.bib}
\begin{document}
One of the most prominent and distinctive features of this style is the
extensive use of sidenotes \autocites(See)()[10--15]{knuth:ct:a}[10]{companion}.
There is a wide margin to provide ample room for sidenotes and small figures
\autocite{knuth:ct:a,knuth:ct:b}. Any footnotes will automatically be converted to
sidenotes.\footnote{Results from \textcite{knuth:ct:a,knuth:ct:b,companion} showed
that...}
\printbibliography
\end{document}
一些说明:
- 选项
autocite=footnote
设置\autocite
利用\smartcite
其后端引用命令。 - 测试
\ifciteseen
需要启用引文跟踪。本例中全局跟踪通过 启用citetracker=true
。也可以使用其他设置。详情请参阅手册。 - 完整的引文用 打印
\usedriver
。此命令的第一个参数允许您在打印之前挂接代码。这是使用\clearfield
和 朋友抑制字段的好地方。在示例中,我抑制了pages
和pagetotal
字段以避免与后记中的页面引用混淆。 - 在 中
numeric
,\textcite
生成紧凑的引文列表。这使打印完整引文变得复杂。编辑采取了textcite
一种简单的方法,只需将labelname
或替换labeltitle
为完整引文即可。 - 该
numeric
样式并不特别适合此自定义。请参阅该verbose
样式或其任何变体以获取一些更好的替代方案。