接受的答案

接受的答案

现在我已经完成了大部分工作,我正在尝试使用自定义的“\printbibliography”命令。我正在使用“article”类,但我采用了。

简而言之,我需要创建一个自定义命令,根据自定义类型“消息”的引用材料是否存在,创建 2 种类型的参考书目。但同样的方法适用于任何类型的参考书目,因此我稍微修改了我的代码,使“消息”类型成为任何类型的“X”条目类型。

我需要以下内容:

  • 出现在目录中的书目标题
  • 对某一类条目是否存在的条件测试。
    • 如果不存在“X”类型的元素,那么我会打印参考书目
    • 如果至少存在 1 个“X”类型的元素,我需要将参考书目拆分为 2 个子标题,并设置不同的标题。这些标题不得包含在目录中。

在“带有 X 条目”的情况下,此代码对我有用:

\newcommand{\printlegalbibliography}{%
\printbibheading[title={Bibliographie}, heading=bibintoc]

\printbibliography[nottype = X, heading=subbibliography, title={Doctrine}]
\printbibliography[type = X, heading=subbibliography, title={Documents Officiels}]
}

我想将其更改为如下形式:

if(bibliography not contains any X entry type)
{
    \printbibliography[title={Bibliographie}, heading=bibintoc]
}
else
{
\printbibheading[title={Bibliographie}, heading=bibintoc]
\printbibliography[nottype = X, heading=subbibliography, title={Doctrine}]
\printbibliography[type = X, heading=subbibliography, title={Documents Officiels}]
}

问题:

  1. 是否有命令来对这部分“参考书目不包含任何 X 条目类型”进行编码?
  2. 在这种情况下,if-else 形式的正确代码是什么?

接受的答案

我只是复制粘贴了@moewe 的代码然后用相关的自定义类型替换(@message)

而且它运行起来毫无麻烦!

答案1

我们暂时假设你的“X 类型”是@online

首先,我们需要计算每种类型的条目数,这在 中完成\AtDataInput。在 中,\printlegalbibliography我们只需要检查是否有任何@online条目

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[style=authoryear, backend=biber]{biblatex}

\addbibresource{biblatex-examples.bib}

\makeatletter
\AtDataInput{%
  \ifltxcounter{blx@typecount@\thefield{entrytype}@\the\c@refsection}
    {}
    {\newcounter{blx@typecount@\thefield{entrytype}@\the\c@refsection}}%
  \stepcounter{blx@typecount@\thefield{entrytype}@\the\c@refsection}}

\newcommand{\printlegalbibliography}{%
  \ifltxcounter{blx@typecount@online@\the\c@refsection}
    {}
    {\newcounter{blx@typecount@online@\the\c@refsection}}%
  \ifnumgreater{\value{blx@typecount@online@\the\c@refsection}}{0}
    {\printbibheading[title={Bibliographie}, heading=bibintoc]%
     \printbibliography[nottype = online, heading=subbibliography, title={Doctrine}]%
     \printbibliography[type = online, heading=subbibliography, title={Documents Officiels}]}
    {\printbibliography[title={Bibliographie}, heading=bibintoc]}}
\makeatother

\begin{document}
\section{Two online sources}
\cite{sigfridsson,markey,ctan}
\printlegalbibliography

\newrefsection
\section{No online sources}
\cite{sigfridsson}
\printlegalbibliography
\end{document}

在此处输入图片描述

相关内容