我正在使用 添加参考书目参考部分,\addcontentsline
以便添加指向目录的链接。不幸的是,目录中的链接链接到了错误的页面,位于参考书目页面的前面。
如何才能立即为目录中的新部分放置锚点?
\printbibliography[heading=offline,filter=offline]
\addcontentsline{toc}{section}{\bibname}
\printbibliography[heading=online,filter=online]
答案1
该\printbibliography
命令表明您正在使用biblatex
。要使用 向目录添加参考书目biblatex
(不对其进行编号),通常应添加 选项heading=bibintoc
。有关详细信息\printbibliography
,请参阅手册第 3.6.7 节biblatex
。
由于您似乎已经定义了一个自定义online
标题,您可能必须更改其定义,使其类似于bibintoc
(它针对文档类量身定制,可以在中找到biblatex.def
)。
答案2
以下评论可以更普遍地使用。
主要最小示例
以下示例是后续步骤的基础。
\documentclass[]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{csquotes}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\defbibfilter{online}{ type=online }
\defbibfilter{offline}{ not type=online }
\begin{document}
\tableofcontents
\noindent\hrulefill
\section{foo}
\cite{companion} \& \cite{ctan}
\noindent\hrulefill
\printbibliography[filter=offline]
\noindent\hrulefill
\printbibliography[filter=online]
\end{document}
下图显示了结果。
我们提到,参考书目的标题是相同的,并且不会显示在目录(toc)中。
假设你正在使用标准类
第一种方法——使用“biblatex”选项
biblatex
第一种方法基于我们仅使用包为命令提供的选项的想法\printbibliograpy
。
首先,我们要为你的标题起一个特别的名字。这可以通过选项来完成title
。所以我们简单设置一下:
\printbibliography[filter=offline,title=Offline,]
\printbibliography[filter=online,title=Online,]
经过此修改,我们在目录中没有条目。要提供目录中的条目,我们可以使用选项heading
。biblatex
为此选项提供不同的值。这里有一个小范围:
bibliography
:- 未编号 -- 目录中无条目 -- 章节级别(文章部分)
subbibliography
:- 未编号 -- 目录中无条目 -- 章节级别(文章的子章节)
bibintoc
:- 未编号 -- 目录中的条目 -- 章节级别(文章部分)
subbibintoc
:- 未编号 -- 目录中的条目 -- 章节级别(文章的子章节)
bibnumbered
:- 编号 -- 目录中的条目 -- 章节级别(文章部分)
subbibnumbered
:- 编号 -- 目录中的条目 -- 章节级别(文章的子章节)
根据这些信息,我们可以扩展您的示例如下:
\printbibliography[filter=offline,title=Offline,heading=subbibintoc]
\printbibliography[filter=online,title=Online,subbibintoc]
该示例演示了第一种方法:
\documentclass[varwidth]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{csquotes}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\defbibfilter{online}{ type=online }
\defbibfilter{offline}{ not type=online }
\begin{document}
\tableofcontents
\noindent\hrulefill
\section{foo}
\cite{companion} \& \cite{ctan}
\noindent\hrulefill
\section{References}
\printbibliography[filter=online,title=Offline,heading=subbibintoc]
\noindent\hrulefill
\printbibliography[filter=online,title=Online,heading=subbibintoc]
\end{document}
第二种方法 - 定义自己的标题
在正常情况下,标准选项应该足够了。但是,您可以使用命令定义自己的特殊标题\defbibheading
。标准语法是
\defbibheading{⟨name⟩}[⟨title⟩]{⟨code⟩}
定义的标题可由可选参数使用heading
(参见上文)。
我们举个例子。标题应该没有编号,但在目录中有一个条目:
\defbibheading{myheading}[\bibname]{%
\begin{center}
\hrulefill#1\markboth{#1}{#1}\hrulefill%
\addcontentsline{toc}{subsection}{#1}%
\end{center}%
}
根据这些标题与选项的组合,title
我们可以创建以下示例:
\documentclass[varwidth]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{csquotes}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\defbibfilter{online}{ type=online }
\defbibfilter{offline}{ not type=online }
\defbibheading{myheading}[\bibname]{%
\begin{center}
\hrulefill#1\markboth{#1}{#1}\hrulefill%
\addcontentsline{toc}{subsection}{#1}%
\end{center}%
}
\begin{document}
\tableofcontents
\noindent\hrulefill
\section{foo}
\cite{companion} \& \cite{ctan}
\noindent\hrulefill
\section{References}
\printbibliography[filter=offline,title=Offline,heading=myheading]
\printbibliography[filter=online,title=Online,heading=myheading]
\end{document}
假设你正在使用 KOMA 类
KOMA
提供额外的文档类选项来操作参考书目的标题。此方法的好处是您可以将选项设置为全局。提供的所有选项都KOMA
与兼容biblatex
。文档类的键是bibliography
。下面列出了一系列可能性。当然,上一节中列出的所有方法都可以与结合使用KOMA
。
notoc
:- 未编号 -- 目录中无条目 -- 章节级别(文章部分)
totoc
:- 未编号 -- 目录中的条目 -- 章节级别(文章部分)
totocnumbered
:- 编号 -- 目录中的条目 -- 章节级别(文章部分)
根据您主要的 MWE,此处进行修改:
\documentclass[bibliography=totoc]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{csquotes}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\defbibfilter{online}{ type=online }
\defbibfilter{offline}{ not type=online }
\begin{document}
\tableofcontents
\noindent\hrulefill
\section{foo}
\cite{companion} \& \cite{ctan}
\noindent\hrulefill
\printbibliography[filter=offline,title=Offline]
\printbibliography[filter=online,title=Online]
\end{document}
假设你正在使用回忆录
这真的很简单。memoir
默认在目录中创建一个条目。