禁止显示空书目警告

禁止显示空书目警告

我已经找到了解决方案(归功于“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并不总是有专门用于所有警告的宏,但在这里你很幸运。

相关内容