由于这是一个相当具体的问题,并且代替了 MWE 一些背景:
我正在开发 tufte-book 类的个性化版本。在此过程中,我现在认为我需要一种方法来按其数字的顺序对 biblatex 键列表进行排序。这是因为我扩展了 cite 命令。(注意:tufte-book 在 vanilla 版本中使用 bibtex,我将其更改为带有 biber 后端的 biblatex,以防万一)
在 tufte-book 中,当你调用时,\cite{key1,key2,..}
真正被调用的是
% Normal \cite behavior
\newcounter{@tufte@num@bibkeys}%
\newcommand{\@tufte@normal@cite}[2][0pt]{%
\hiddencite{#2}
% Snag the last bibentry in the list for later comparison
\let\@temp@last@bibkey\@empty%
\@for\@temp@bibkey:=#2\do{\let\@temp@last@bibkey\@temp@bibkey}%
\marginnote[#1]{%
% Loop through all the bibentries, separating them with semicolons and spaces
\normalsize\normalfont\@tufte@citation@font%
\setcounter{@tufte@num@bibkeys}{0}%
\@for\@temp@bibkeyx:=#2\do{%
\ifthenelse{\equal{\@temp@last@bibkey}{\@temp@bibkeyx}}%
{\ifthenelse{\equal{\value{@tufte@num@bibkeys}}{0}}{}{and\ }%
\@tufte@trim@spaces\@temp@bibkeyx% trim spaces around bibkey
\hiddencite{\@temp@bibkeyx}\bibentry{\@temp@bibkeyx}}%
{\@tufte@trim@spaces\@temp@bibkeyx% trim spaces around bibkey
\hiddencite{\@temp@bibkeyx}\bibentry{\@temp@bibkeyx};\ }%
\stepcounter{@tufte@num@bibkeys}%
}%
}%
}
这已经包括了我的一些修改(目标是将完整的引文作为边注而不是脚注,并显示引文编号,见下图)。Hiddencite 只是我存储的原始引文,因为它是从 tufte-book 更改的。但是,它的效果不如原始的 cite 命令,因为列表 ( #2
) 没有排序。
生成于
some citations\cite{Tufte2001,Tufte1990,Tufte1997,Tufte2006}
same citations in different ordering \cite{Tufte2001,Tufte2006,Tufte1990,Tufte1997}
我的目标是找到一种方法,使两个调用都生成相同的输出(在正文和边注中)
现在真正的问题是:我如何对我拥有的引用键列表进行排序?我想要将参数转换key1,key3,key2,key4
为key1,key2,key3,key4
。(假设这是正确的顺序)。
我确实尝试研究 natbib 和 biblatex 包如何处理这个问题,但坦率地说,我无法理解代码。
最后的评论:有人问我如何实现这种行为,这不是我的想法(就我个人而言,最后给出一个简单的参考书目就足够了)
答案1
评论中的 moewe 是对的,只需使用 biblatex 即可轻松实现
\usepackage[
style=numeric-comp,
backend=biber,
sorting=none
]{biblatex}
\addbibresource{sample-handout.bib}
\let\truecite\cite
\DeclareCiteCommand{\footcite}[\marginnote]%
{\usebibmacro{prenote}}
{\truecite{\thefield{entrykey}} \printnames{author},\
\printfield{title},\printfield{year}}
{\multicitedelim}
{\usebibmacro{postnote}}
\renewcommand{\cite}[1]{\truecite{#1}\footcite{#1}}
我将单独处理侧注中的引用(按照评论中的建议移至答案)