我已经找到了解决方案(归功于“moewe”),用于解决我在 BiBLaTeX 中排序和编号的特定问题。
BiBLaTeX 第 1 部分 和 BiBLaTeX 第 2 部分
这两个问题已经得到解决,如下所示:
\documentclass[10pt,oneside,a4paper]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[backend=biber,language=english, style=numeric, ,citestyle=numeric,giveninits=true,dashed=false,
bibstyle=authoryear,refsegment=chapter,backref=true]{biblatex}
\BiblatexSplitbibDefernumbersWarningOff
\DeclareSortingTemplate{none}{
\sort{\field{presort}}
\sort{\citeorder}
\sort{\intciteorder}
}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\pertype{book}
\step[fieldset=presort, fieldvalue=aa]
}
\map{
\pertype{article}
\step[fieldset=presort, fieldvalue=bb]
}
\map{
\pertype{online}
\step[fieldset=presort, fieldvalue=cc]
}
\map{
\pertype{inproceedings}
\step[fieldset=presort, fieldvalue=dd]
}
}
}
\makeatletter
\input{numeric.bbx}
\makeatother
\DeclareNameAlias{author}{family-given}
\DeclareNameAlias{translator}{family-given}
\renewcommand*{\revsdnamepunct}{}
\defbibheading{subsubbibintoc}[\refname]{\subsection*{#1}}
\defbibheading{subsubbibliography}[\refname]{\subsection*{#1}}
\addbibresource{biblatex-examples.bib}
\begin{document}
\tableofcontents
\chapter{Chapter 1}
Lorem \autocite{sigfridsson}
ipsum \autocite{nietzsche:ksa1}
dolor \autocite{moraux}
sit \autocite{knuth:ct:c}~\autocite{spiegelberg}.
\printbibheading[title=Chapter bibliography,heading=subbibintoc]
\printbibliography[segment=\therefsegment,type=book,heading=subsubbibintoc,title={Books}]
\printbibliography[segment=\therefsegment,type=article,heading=subsubbibintoc,title={Articles}]
\printbibliography[segment=\therefsegment,type=online,heading=subsubbibintoc,title={Online}]
\printbibliography[segment=\therefsegment,type=inproceedings,heading=subsubbibintoc,title={Conferences}]
\vspace{5mm}
{\let\clearpage\relax \chapter{Chapter 2}}
Lorem~\cite{vizedom:related}
ipsum~\cite{gerhardt}
dolor~\cite{augustine}
sit~\cite{ctan}.
\printbibheading[title=Chapter bibliography,heading=subbibintoc]
\printbibliography[segment=\therefsegment,type=book,heading=subsubbibintoc,title={Books}]
\printbibliography[segment=\therefsegment,type=article,heading=subsubbibintoc,title={Articles}]
\printbibliography[segment=\therefsegment,type=online,heading=subsubbibintoc,title={Online}]
\printbibliography[segment=\therefsegment,type=inproceedings,heading=subsubbibintoc,title={Conferences}]
\vspace{5mm}
{\let\clearpage\relax \chapter{Chapter 3}}
Lorem~\cite{wassenberg},
ipsum~\cite{baez/online}.
\printbibheading[title=Chapter bibliography,heading=subbibintoc]
\printbibliography[segment=\therefsegment,type=book,heading=subsubbibintoc,title={Books}]
\printbibliography[segment=\therefsegment,type=article,heading=subsubbibintoc,title={Articles}]
\printbibliography[segment=\therefsegment,type=online,heading=subsubbibintoc,title={Online}]
\printbibliography[segment=\therefsegment,type=inproceedings,heading=subsubbibintoc,title={Conferences}]
\printbibheading[title=Global bibliography at the end,heading=bibintoc]
\printbibliography[type=book,heading=subsubbibliography,title={Books}]
\printbibliography[type=article,heading=subsubbibliography,title={Articles}]
\printbibliography[type=online,heading=subsubbibliography,title={Online}]
\printbibliography[type=inproceedings,heading=subsubbibliography,title={Conferences}]
\end{document}
使用代码时,我收到 6 条警告”
应该是这样的,因为它给了我信息,在某些章节中我没有使用冠词等。大多数用户(包括 moewe - 再次感谢)只是接受警告...我也是...但我需要一个可能性离开这样的警告又简单:
\usepackage {silence}
\WarningFilter {biblatex}{Empty bibliography on input line 65.}
不起作用,因为任何时候的页码都不同……等等。
我解释为什么我需要它。例如,当我知道我已经 100% 地完成了我的工作,或者我与其他人分享了我的工作,并且我知道有一些可接受的警告(我的工作已经准备好了),我会做出离开所有警告并继续我的工作。因此,我不再跟踪众多旧警告中是否有新警告,而是离开他们所有人,当其他人再次出现时,我得到一些信息错误的正在与我的工作。离开这个特定的警告对我来说是一个挑战,所以我寻求一些帮助。
答案1
您可以使用
\usepackage{silence}
\WarningFilter{latex}{Empty bibliography}
或者
\makeatletter
\def\blx@warn@bibempty{}
\makeatother
(后者只有在biblatex
加载后才有效)。
对于前者,我们使用silence
包来过滤掉警告。也许意外地biblatex
不会以自己的名义发出空书目警告,而是产生通用的 LaTeX 警告(大概它复制了 BibTeX 生成的书目的标准行为,以便让解析输出的工具更容易.log
看到发生了什么),所以我们需要\WarningFilter{latex}
而不是\WarningFilter{biblatex}
。此外,过滤器文本不能包含on line ...
消息,因为它是由 LaTeX 自动添加的,并且消息过滤代码看不到它。
第二种解决方案的工作原理是告诉发出相关警告的宏biblatex
不做任何事情。通常,biblatex
并不总是有专门用于所有警告的宏,但在这里你很幸运。