![问题:](https://linux22.com/image/374987/%E9%97%AE%E9%A2%98%EF%BC%9A.png)
继我的论文成功之后,我现在要讨论一个更复杂的话题,即交叉引用。
我有一些大型法律书籍,法语中称为 commentaire,其中包含几个子部分,其中包含对某项立法的非常详细的分析,法语中称为“article”(但这与 article 条目类型无关)。它们之间的关系是,文本中引用了子部分(子部分),但没有引用主书(父部分)。但是,父条目和子条目都应该被引用。
我发现设置 mincrossrefs 已设置为 1 来触发父级和子级的显示。
因此我创建了一个名为“collectif”的新类型,它只包含父类信息。这是因为这类父类具有独特的格式(请参阅下文关于作者/编辑的内容)。
现在,我遇到了一些问题,因为这两个部分的格式必须遵循非常严格的规则。我将从父条目开始,其中我的代码(下面的 MWE)主要按预期工作:
- 所有编辑器都应采用标准格式(OK)
- 名称后面应显示一个字符串“(édit.)
- 编辑后,应该是一个分隔符(OK)
- 标题应为斜体(OK)
- 最后应该有一个区块位置+年份(OK)。
现在子条目应该与我在书中需要的类似。所以我从中获取了代码我问的另一个问题。但我在尝试使用它时遇到了一些问题。以下是我的要求:
- 作者采用小写字母(OK)
- 标题为斜体,不好,我不知道为什么样式被重置
- 插入交叉引用,格式应为“in :”。目前我得到的是“in : sous la dir. de”
- 再次强调,编辑的名字是小写字母。但这并不意味着如果一本书同时包含编辑和作者,作者的名字也应该使用小写字母。因此,我只需要在父级中不使用小写字母
- 地点和年份之间有一个“,”。
最后,我添加的新条目类型似乎与之前的版本冲突:11。引用为经纪人。它应该标识孩子的“作者”也可以与其他书目条目重复,因为在我的 MWE 中,作者“Bohnet”有 3 本书/部分评论。
到目前为止,我已经尝试过了,但有太多的移动部件,我无法尝试应用所提出的解决方案在其他一些问题中
问题:
- 我糟糕的代码该如何修复?
MWE 代码
主文本
% MweBiblatex Swiss Legal
\documentclass{article}
% Needed by Biblatex
\usepackage{polyglossia}
\setmainlanguage{french}
\usepackage{parskip}
\usepackage{csquotes}
\usepackage[style=biblatex-xawi, language=french, bibencoding=UTF8, backend=biber]{biblatex}
\addbibresource{main.bib}
\begin{document}
\section{Test de la bibliographie}
\printbibliography
\section{Tests de citation}
\subsection{Libre}
% Bohnet, livre Procédure : \cite{bohnetLivre} \\
Bohnet, livre Procédure en schéma : \cite{bohnetSchema} \\
\subsection{Commentaires}
Bohnet, commentaires : cite as \cite{cpc85} \\ and should be in bibliography as \\
\textsc{Bohnet} François, art. 85 CPC, in : Bohnet François et al. (édit.), Code de procédure civile commenté, Bâle 2011.
Bohnet François /Haldy Jacques /Jeandin Nicolas /Schweizer Philippe /Tappy Denis (edit.), Code de procédure civile commenté, Bâle 2011
\end{document}
主页
@book{bohnetLivre,
author = {Bohnet, François},
title = {Procédure civile},
edition = 2,
date = {2014},
location = {Bâle},
label = {Procédure}
}
@book{bohnetSchema,
author = {Bohnet, François},
title = {La procédure civile en schémas},
date = {2014},
location = {Bâle},
label = {Schéma}
}
@book{bohnetActions,
author = {Bohnet, François},
title = {Actions civiles},
subtitle = {Conditions et conclusions},
date = {2014},
location = {Bâle},
label = {Actions}
}
@collectif{coCPC,
editor = {Bohnet, François and Haldy, Jacques and Jeandin, Nicolas and Schweizer, Philippe and Tappy, Denis},
title = {Code de procédure civile commenté},
date = {2011},
location = {Bâle},
}
@inbook{cpc85,
author = {Bohnet, François},
title = {art. 85 CPC},
date = {2011},
location = {Bâle},
label = {Commentaire},
crossref = {coCPC},
}
biblatex-xawi.bbx
\ProvidesFile{biblatex-xawi.bbx}[2018/04/13 v1.1 alpha)]
% Depencances
\RequireBiber[2]
\RequireBibliographyStyle{authortitle}
% Localisation
\NewBibliographyString{thesis,habilthesis}
\DefineBibliographyStrings{french}{
citedas = {cit\'e},
thesis = {th\`ese},
habilthesis = {th\`ese d'habilitation},
}
% --- --- Setting default options --- --- %
\ExecuteBibliographyOptions{%
maxbibnames=99, % nombre max. de noms pour les entrées
maxcitenames=99, % nombre max. de noms pour les citations
mincrossrefs=1, % nombre min pour les références croisées
bibwarn=false, % avertissement uniques pour les entrés bibliographiques
dashed=false, % Nom entier même si répétition
singletitle=true,
uniquename=full,
uniquelist=true
}
% --- --- Formatage général de la bibliographie --- --- %
% Formatage des paramètres de la bibliographie
\setlength{\bibhang}{0pt}
\setlength{\bibitemsep}{1.5\baselineskip}
% Formatage global :
\DeclareFieldFormat{title}{\mkbibemph{#1}}
% Dans les citations, pas d'espaces entre les slash (contrairement à la bibliographie)
\renewcommand*{\multinamedelim}{\ifcitation{\slash}{\addnbspace\slash\addspace}}
\renewcommand*{\finalnamedelim}{\multinamedelim}
% BibLatex v2.8+ : Format des séparateurs entre les noms: des slash
% \DeclareDelimFormat{multinamedelim}{\slash}
% \DeclareDelimFormat[bib,biblist]{multinamedelim}{\addnbspace\slash\addspace}
% \DeclareDelimAlias{finalnamedelim}{multinamedelim}%
\renewcommand*{\multilistdelim}{\slash}
%\renewcommand*{\multilistdelim}{\addnbspace\slash\addspace}
\renewcommand*{\finallistdelim}{\multilistdelim}
\renewcommand*{\newunitpunct}{\addcomma\space}
\renewcommand*{\revsdnamepunct}{}
\DeclareNameAlias{sortname}{family-given}
% Remove all possible shorthand
% https://tex.stackexchange.com/questions/244714/how-to-disable-the-use-of-shorthands-in-biblatex
\DeclareFieldInputHandler{shorthand}{\def\NewValue{}}
% --- --- Pilote de bibliographie pour les ouvrages collectifs --- --- %
\DeclareFieldFormat[collectif]{title}{#1}
\DeclareFieldFormat[collectif]{editor}{#1}
\DeclareBibliographyDriver{collectif}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{editor}%
\setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{title}%
\newunit\newblock
\usebibmacro{location+date}%
\setunit{\addspace}%
\usebibmacro{citedas}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{book}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author}%
\setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{maintitle+title}%
\newunit\newblock
\printfield{edition}%
\newunit\newblock
\usebibmacro{location+date}%
\setunit{\addspace}%
\usebibmacro{citedas}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}
}
% --- Formatage de la citation spécifique dans la bibliographie --- %
\newbibmacro{citedas:cite}{%
\begingroup
\delimcontext{cite}%
\DeclareFieldFormat{bibhyperref}{##1}%
\csuse{blx@hook@cite}%
\csuse{blx@hook@citekey}%
\undef\cbx@lasthash
\undef\cbx@lastyear
\citetrackerfalse\pagetrackerfalse\backtrackerfalse
\defcounter{maxnames}{\blx@maxcitenames}%
\usebibmacro{cite}%
\endgroup
}
\newbibmacro{citedas}{%
\ifsingletitle
{}{
\printtext[parens] {%
\bibstring{citedas}%
\addcolon\space
\usebibmacro{citedas:cite}
}
}
}
\renewbibmacro*{location+date}{%
\printlist{location}%
\setunit*{\addspace}%
\usebibmacro{date}%
\newunit
}
\newbibmacro{thesis:type+origlocation}{%
\printfield{type}%
\setunit*{\addspace}%
\printlist{origlocation}%
\newunit
}
\endinput % seulement à la fin
biblatex-xawi.cbx
\ProvidesFile{biblatex-xawi.cbx}[2018/04/13 v1.0 alpha]
\RequireCitationStyle{authortitle}
\DeclareFieldFormat*{citetitle}{#1}
\DeclareDelimFormat{nametitledelim}{\textendash}
% --- Formatage de la citation spécifique dans les citations --- %
% Definition de la partie "Labeltitle"
\DeclareLabeltitle{%
\field{label}
\field{shorttitle}
\field{title}
\field{maintitle}
}
\renewbibmacro*{cite}{%
\iffieldundef{shorthand}
{\ifnameundef{labelname}
{\usebibmacro{cite:title}}
{\ifsingletitle
{\printtext[bibhyperref]{\printnames{labelname}}}
{\printnames{labelname}%
\setunit{\nametitledelim}%
\usebibmacro{cite:title}}}}%
{\usebibmacro{cite:shorthand}}}
\renewbibmacro*{textcite}{%
\ifnameundef{labelname}
{\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
\iffieldundef{shorthand}
{\usebibmacro{cite:title}}%
{\usebibmacro{cite:shorthand}}}
{\ifthenelse{\ifsingletitle\AND
\(\iffieldundef{prenote}\OR\value{citecount}>1\)}
{\printtext[bibhyperref]{\printnames{labelname}}}
{\printnames{labelname}%
\setunit{%
\global\booltrue{cbx:parens}%
\addspace\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
\iffieldundef{shorthand}
{\usebibmacro{cite:title}}%
{\usebibmacro{cite:shorthand}}}}}
\endinput
biblatex-xawi.dbx
\ProvidesFile{biblatex-xawi.dbx}[2018/04/18 v1.1]
\DeclareDatamodelEntrytypes{collectif}
\endinput