我使用\newcommand
合并supercite
和footfullcite
在脚注中引用参考书目,并在参考书目中引用相同的参考书目。我无法合并引文的编号。
\documentclass[a4paper,11pt]{book}
\usepackage{geometry}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[autopunct=true,giveninits=true,autocite=superscript,backend=bibtex,sorting=none, sortlocale=auto,notetype=foot+end,style=numeric-comp,maxnames=10,maxbibnames=100,doi=true, isbn=true,url=false,eprint=true]{biblatex}
\addbibresource{library.bib}
\usepackage{csquotes}
\newcommand{\PresCite}[1]{\autocite{#1} \footfullcite{#1}}
\usepackage[colorlinks=true, frenchlinks=true, linkcolor=black,filecolor=magenta,urlcolor=blue, citecolor=gray]{hyperref}
\urlstyle{same}
%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
bla bla bla \PresCite{Toto1900,Toto1901,Toto1902}
\printbibliography
\end{document}
结果是:
我想要的是:
答案1
由于 已经提供了脚注标记\autocite
,因此可能的解决方案是避免\footfullcite
使用没有标记的脚注,而是使用\fullcite
脚注内部没有标记的脚注。例如,可以按照以下方式制作没有标记的脚注隐藏脚注编号,这将创建一个hyperref
关于空锚点的警告,该警告可以在以下情况下被抑制避免超链接警告:忽略空锚点。
通常\fullcite
不会打印引用标签(类似于\footfullcite
),但你可以通过重新定义命令来添加编号\fullcite
,如下所示在文本中添加完整引用条目的编号/标签?。在下面的代码中,无需重新定义,而是创建\fullcite
一个新的宏,以便您仍然可以在其他地方使用原始宏。\myfullcite
\fullcite
宏的重新定义还允许您在多次引用的情况下在每个引用后插入换行符,以模拟多个脚注的出现。
剩下的就是一些间距问题,使参考书目条目在脚注中对齐(彼此对齐以及与常规脚注对齐)。第一个条目可以-1em
在脚注开头用负号纠正,而其他行可以在内部用负号纠正\myfullcite
。
把所有内容放在一起:
\documentclass[a4paper,11pt]{book}
\usepackage[height=5cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[autopunct=true,giveninits=true,autocite=superscript,backend=bibtex,sorting=none, sortlocale=auto,notetype=foot+end,style=numeric-comp,maxnames=10,maxbibnames=100,doi=true, isbn=true,url=false,eprint=true]{biblatex}
\usepackage{xcolor}
\addbibresource{library.bib}
\usepackage{csquotes}
\makeatletter
\def\blfootnote{\xdef\@thefnmark{}\@footnotetext}
\makeatother
\DeclareCiteCommand{\myfullcite}
{\usebibmacro{prenote}}
{{\printtext[labelnumberwidth]{% New
\printfield{prefixnumber}% New
\printfield{labelnumber}}} % New
\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}
{\par\hspace{-1em}}
{\usebibmacro{postnote}}
\newcommand{\PresCite}[1]{%
\autocite{#1}%
\begin{NoHyper}%
\blfootnote{\hspace{-1em}\myfullcite{#1}}%
\end{NoHyper}
}
\usepackage[colorlinks=true, frenchlinks=true, linkcolor=black,filecolor=magenta,urlcolor=blue, citecolor=gray]{hyperref}
\urlstyle{same}
%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
regular cite \cite{Toto1899}
bla bla bla \PresCite{Toto1900,Toto1901,Toto1902}
normal\footnote{normal footnote} footnotes\footnote{second footnote}
just one \PresCite{Toto1899}
and again \PresCite{Toto1899}
\printbibliography
\end{document}
结果(页面尺寸缩小至 5cm,用于geometry
截图):
请注意,引用打印为[1]
等而不是1.
,以区别于普通脚注。如果您不想这样,那么您可以按如下方式重新定义:
\DeclareCiteCommand{\myfullcite}
{\usebibmacro{prenote}}
{{ \printfield{prefixnumber}% New
\printfield{labelnumber}.} % New
\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}
{\par\hspace{-0.85em}}
{\usebibmacro{postnote}}
请注意,略微减少的负空间0.85em
不是1em
。
还要注意,\PresCite
对同一参考文献重复的命令会创建重复的脚注,并具有相同的编号,因为该编号取自参考列表,而不是取自脚注计数器\footfullcite
。
或者,如果您只想要压缩脚注,并且数字不必与参考书目编号相对应,那么您可以使用该footnoterange
包(请参阅压缩连续的脚注标记) 并通过在 cite 命令的前代码和后代码以及循环代码中的命令中\DeclareCiteCommand
包含环境来创建其中的(一系列)脚注(参见footnoterange
\footnote
手动的请参阅第 180 页的 BibLaTeX)。
\documentclass[a4paper,11pt]{book}
\usepackage[height=5cm]{geometry}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[autopunct=true,giveninits=true,autocite=superscript,backend=bibtex,sorting=none, sortlocale=auto,notetype=foot+end,style=numeric-comp,maxnames=10,maxbibnames=100,doi=true, isbn=true,url=false,eprint=true]{biblatex}
\usepackage{xcolor}
\usepackage{footnoterange}
\addbibresource{library.bib}
\usepackage{csquotes}
\DeclareCiteCommand{\PresCite}
{\usebibmacro{prenote}\begin{footnoterange}}
{\footnote{\usedriver{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}}
{}
{\usebibmacro{postnote}\end{footnoterange}}
\usepackage[colorlinks=true, frenchlinks=true, linkcolor=black,filecolor=magenta,urlcolor=blue, citecolor=gray]{hyperref}
\urlstyle{same}
%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
regular cite \cite{Toto1899}
bla bla bla \PresCite{Toto1900,Toto1901,Toto1902}normal\footnote{normal footnote} footnotes\footnote{second footnote}
\printbibliography
\end{document}