![法国考古学中非常奇怪的 biblatex 风格](https://linux22.com/image/283459/%E6%B3%95%E5%9B%BD%E8%80%83%E5%8F%A4%E5%AD%A6%E4%B8%AD%E9%9D%9E%E5%B8%B8%E5%A5%87%E6%80%AA%E7%9A%84%20biblatex%20%E9%A3%8E%E6%A0%BC.png)
我对参考书目样式有很多疑问biblatex
。请原谅我的英语不好,我是一名法国学生。
我想要这样的风格:
但经过大量研究我得到了:
它几乎完美,但我无法获得小写字母的密钥,这无疑是因为软件包babel
带有french
将作者设置为小写字母的选项。密钥有时会像这样愚蠢:
最后,我想删除像本期刊这样的文章标题的引号!(出于好奇,它是南方考古学文献 (外部链接))
以下是我在序言中根据互联网上的研究成果所做的修改以及我的参考书目的简短摘录:
@BOOK{bohec95,
title = {Histoire militaire des guerres puniques},
publisher = {{\'E}dition du Rocher},
year = {1995},
author = {Le Bohec, Yann},
address = {Monaco},
entrysubtype = {sources secondaires},
keywords = {monographie, histoire},
lccn = {96141557},
owner = {Axel},
pagetotal = {337},
timestamp = {2013.09.25}
}
@ARTICLE{leveau03,
author = {{\relax Ph}ilippe Leveau},
title = {Le franchissement du Rh\^one par Hannibal : le chenal et la navigation
fluviale à la fin de l'\^Age du Fer},
journal = {Revue archéologique},
year = {2003},
volume = {3},
pages = {25-50},
number = {35},
entrysubtype = {sources secondaires},
keywords = {article, histoire},
owner = {Axel},
shortjournal = {RA},
timestamp = {2013.09.25}
}
\documentclass{article}
%%%%%%%%%%%%%%% FRANCAIS %%%%%%%%%%%%%%%
\usepackage[french]{babel}
\usepackage{csquotes}
\usepackage{fontspec}
\usepackage{xunicode}
\setmainfont[Mapping=tex-text,Numbers=OldStyle]{Linux Libertine O}
%%%%%%%%%%%%%%%%%% %BILIOGRAPHIE
\usepackage[ %BILIOGRAPHIE
backend=bibtex,bibstyle=authortitle,citestyle=authoryear,sorting=nyt
% Configuration de la bilio
]{biblatex}
\ExecuteBibliographyOptions{maxnames=3, % Et al. quand trop de nom
firstinits=true,
uniquename=init%initiale
}
%% BIDOUILLES BIBLIO
\renewcommand{\mkbibnamefirst}[1]{\parentext{#1}} %parenthèse de l'initiale
\DeclareNameAlias{sortname}{last-first} %rangement des noms de famille et prénoms
\renewcommand{\revsdnamepunct}{\addnbspace} %Enlève la virgule après le nom de famille quand nom inversé
\renewcommand{\multinamedelim}{\addnbspace\addcomma\addnbspace} % remplace et par ","
\renewcommand{\finalnamedelim}{\addnbspace\addcomma\addnbspace} % remplace et par ","
\DeclareLabelname{%
\field{editor}
}
\DeclareBibliographyDriver{book}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\printtext{\bfseries{\printnames{labelname}}\space\printfield{year}\space\addcolon\space}%
\usebibmacro{author/editor+others}%
\setunit{\space\textendash\space}\newblock
\usebibmacro{maintitle+title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\setunit*{\addspace}\newblock
\usebibmacro{series+number}%
\newunit
\printfield{pagetotal}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\usebibmacro{related}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{article}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\printtext{\bfseries{\printnames{labelname}}\space\printfield{year}\space\addcolon\space}%
\usebibmacro{author/editor+others}%
\setunit{\space\textendash\space}\newblock
\usebibmacro{maintitle+title}%
\newunit\newblock
\usebibmacro{journal+issuetitle}%
\newunit
\usebibmacro{byeditor+others}%
\newunit
\usebibmacro{note+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{issn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{incollection}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\printtext{\bfseries{\printnames{labelname}}\space\printfield{year}\space\addcolon\space}%
\usebibmacro{author/editor+others}%
\setunit{\space\textendash\space}\newblock
\usebibmacro{maintitle+title}%
\newunit\newblock
\usebibmacro{in:}%
\usebibmacro{bybookauthor}%
\newunit\newblock
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{inproceedings}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\printtext{\bfseries{\printnames{labelname}}\space\printfield{year}\space\addcolon\space}%
\usebibmacro{author/editor+others}%
\setunit{\space\textendash\space}\newblock
\usebibmacro{maintitle+title}%
\newunit\newblock
\usebibmacro{in:}%
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{event+venue+date}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\printlist{organization}%
\newunit
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
% "Et al." en ITALIQUE
\renewbibmacro*{name:andothers}{% Based on name:andothers from biblatex.def
\ifboolexpr{
test {\ifnumequal{\value{listcount}}{\value{liststop}}}
and
test \ifmorenames
}
{\ifnumgreater{\value{liststop}}{1}
{\finalandcomma}
{}%
\andothersdelim\bibstring[\emph]{andothers}}
{}}
%Enlever le tiret lorsqu'il y a une récurrence des auteurs
%
\makeatletter
\AtEveryBibitem{%
\global\undef\bbx@lasthash%
\clearfield{extrayear}}
\makeatother
%Enlever les parenthèses des dates des articles
\renewbibmacro*{issue+date}{%
\setunit{\addcomma\space}% NEW
% \printtext[parens]{% DELETED
\iffieldundef{issue}
{\usebibmacro{date}}
{\printfield{issue}%
\setunit*{\addspace}%
% \usebibmacro{date}}}% DELETED
\usebibmacro{date}}% NEW
\newunit}
%Met les abréviations des revues
\renewbibmacro*{journal}{%
\iffieldundef{shortjournal}
{%
\iffieldundef{journaltitle}
{}
{%
\printtext[journaltitle]
{%
\printfield[titlecase]{journaltitle}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{journalsubtitle}%
}%
}%
}
{\printtext[journaltitle]{\printfield[titlecase]{shortjournal}}}%
}
这条线对仪表板和按键进行了较大的修改。
\printtext{\bfseries{\printnames{labelname}}\space\printfield{year}\space\addcolon\space}%
瞧!(我一直梦想用斜体书写:p)
如果有人有想法,我会非常高兴,也很高兴其他人能有这样的想法!:D 非常感谢。Merci beaucoup。
编辑:是的,字段编辑器还存在其他问题,有“sous la direction de”,我想在作者后面加上“dir。”,就像这样:
之后如何将引用更改为具有作者年份样式的小写形式?
最后,我无法使用这种风格的 Linux Libertine,因为我总是使用小写字母,您有解决方案吗?
编辑 2:太棒了!几乎完美!你真是个天才!:D 确实,我可以使用 xelatex,还可以使用 linux libertine 制作一些精美的连字符 :)
对于“et al.”我希望在标签中而不是在作者列表中。
在这个期刊中,有时我们在关键词中使用“et al.”,有时则没有,就像前面的 Py、Lopez、Asensio 的例子一样。我不明白。
最终编辑:
我成功地用“dir.”代替了古代资料中的“éd”和“Établit par”:
\DefineBibliographyStrings{french}{%
byeditor = \iffieldequalstr{keywords}{source}% %Etablit par, pour les sources et dir. pour les inX
{Établit\space par}%
{dir\adddotspace\smartof},
editor = {dir.},
editors = {dir.},
}
但是作者后面有一个烦人的逗号!
您有办法删除它吗?
我又发现了另一个问题……对于书籍页面,我使用“pagetotal”得到:例如 550 页,因此使用你的代码,我有一个最后的点。好的。但是日期后面也有一个点。而对于文章,我没有最后的点,因为:
\renewcommand*{\finentrypunct}{}
那么,我该怎么做呢,总是有一个最后的点,但在日期后面有一个逗号,因为目前我有这个:
我成功地删除了“dir.”之前的逗号和程序中的括号,只存在日期后面的点和主标题之前放置 byeditor 的问题。
最后编辑:我设法删除日期后面的点,并通过修改文件标准中的顺序来更改书中、收藏中等条目的顺序。
这是我为未来几代人制作的最后一个 MWE!XD
\usepackage[ %BILIOGRAPHIE
backend=bibtex,style=authoryear, firstinits, mergedate=false, style=authoryear-ibid,maxcitenames=2, maxbibnames=999
% Configuration de la bilio
]{biblatex}
\renewcommand*{\revsdnamepunct}{}
\renewcommand*{\finalnamedelim}{\multinamedelim}
\renewcommand*{\mkbibnamelast}[1]{\textsc{#1}}
\DeclareNameAlias{sortname}{last-first}
\renewcommand{\mkbibnamefirst}[1]{\parentext{#1}} %parenthèse de l'initiale
\renewcommand*{\labelnamepunct}{\space\textendash\space} %tiret après le label
\renewbibmacro*{date+extrayear}{}% rajoute date
\DeclareFieldFormat
[article,inbook,incollection,inproceedings,patent,thesis,unpublished]
{title}{#1}
\renewbibmacro{in:}{% enlève guillemets articles
\ifentrytype{article}
{}
{\printtext{\bibstring{in}\intitlepunct}}}
\renewbibmacro*{issue+date}{%
\printfield{issue}%
\setunit{\addcomma\space}%
\printdate%
\newunit}
\renewbibmacro*{publisher+location+date}{%
\printlist{location}%
\setunit*{\addcomma\space}%
\printlist{publisher}%
\setunit*{\addcomma\space}%
\usebibmacro{date}%
\newunit}
\renewbibmacro*{begentry}{\printtext[bold]{\usebibmacro{cite}\addspace\addcolon\space}}
%Met les abréviations des revues
\renewbibmacro*{journal}{%
\iffieldundef{shortjournal}
{%
\iffieldundef{journaltitle}
{}
{%
\printtext[journaltitle]
{%
\printfield[titlecase]{journaltitle}%
\setunit{\subtitlepunct}%
\printfield[titlecase]{journalsubtitle}%
}%
}%
}
{\printtext[journaltitle]{\printfield[titlecase]{shortjournal}}}%
}
%Enlever le tiret lorsqu'il y a une récurrence des auteurs
%
\makeatletter
\AtEveryBibitem{%
\global\undef\bbx@lasthash%
\clearfield{extrayear}}
\makeatother
% "Et al." en ITALIQUE
\renewbibmacro*{name:andothers}{% Based on name:andothers from biblatex.def
\ifboolexpr{
test {\ifnumequal{\value{listcount}}{\value{liststop}}}
and
test \ifmorenames
}
{\ifnumgreater{\value{liststop}}{1}
{\finalandcomma}
{}%
\andothersdelim\bibstring[\emph]{andothers}}
{}}
%%% Histoire des noms et al...
\makeatletter
\renewbibmacro*{begentry}{%
\renewcommand*{\mkbibnamelast}[1]{##1}%
\defcounter{maxnames}{\blx@maxcitenames}%
\printtext[bold]{\usebibmacro{cite}\addspace:\space}%
\defcounter{maxnames}{\blx@maxbibnames}
\renewcommand*{\mkbibnamelast}[1]{\textsc{\textnohyphenation{##1}}}}
\makeatother
\AtBeginDocument{\renewcommand*{\mkbibnamelast}[1]{#1}} %minuscule citation
\renewbibmacro*{event+venue+date}{ %Enlève parenthèse colloque
\iffieldundef{eventtitle}
{}
{%
\bibstring{presentedat}%
\printfield{eventtitle}%
}%
\ifboolexpr{
test {\iffieldundef{venue}}
and
test {\iffieldundef{eventyear}}
}
{}
{\setunit*{\addspace}%
\printtext{%
\printfield{venue}%
\setunit*{\addcomma\space}%
\printeventdate}}%
\newunit
}
\DefineBibliographyStrings{french}{%
byeditor = \iffieldequalstr{keywords}{source}% %Etablit par, pour les sources et dir. pour les inX
{Établit\space par}%
{dir\adddotspace\smartof},
in = {\textit{in}},%
editor = {dir\adddotspace},%
editors = {dir\adddotspace},%
opcit = \iffieldequalstr{entrytype}{article}{art\adddotspace cit\adddot}{\emph{op\adddotspace cit}\adddot},%
idem = {\emph{idem}},%
ibidem = {\emph{ibid\adddot}},%
%pagetotal = {p\adddot},%
%pages = {pp\adddot},%
}
%enlève la virugule avant dir.
\makeatletter
\renewbibmacro*{bbx:editor}[1]{%
\ifboolexpr{
test \ifuseeditor
and
not test {\ifnameundef{editor}}
}
{\usebibmacro{bbx:dashcheck}
{\bibnamedash}
{\printnames{editor}%
% \setunit{\addcomma\space}% DELETED
\setunit{\addspace}% ADDED
\usebibmacro{bbx:savehash}}%
% \usebibmacro{#1}% DELETED
\printtext{\usebibmacro{#1}}% ADDED
\clearname{editor}}
{\global\undef\bbx@lasthash}}
\makeatother
%%modifié book pour virgule
\DeclareBibliographyDriver{book}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
\setunit{\labelnamepunct}\newblock
\usebibmacro{maintitle+title}%
\newunit
\printlist{language}%
\newunit\newblock
\usebibmacro{byauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\addcomma
\printfield{pagetotal}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
%Change ordre des entrées pour les in quelquechoses :
\DeclareBibliographyDriver{incollection}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others}%
\setunit{\space\textendash\space}\newblock
\usebibmacro{maintitle+title}%
\newunit\newblock
\usebibmacro{in:}%
\usebibmacro{bybookauthor}%
\newunit\newblock
\usebibmacro{byeditor+others}%
\newunit\newblock
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{inproceedings}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others}%
\setunit{\space\textendash\space}\newblock
\usebibmacro{maintitle+title}%
\newunit\newblock
\usebibmacro{in:}%
\usebibmacro{byeditor+others}%
\newunit\newblock
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\usebibmacro{event+venue+date}%
\newunit\newblock
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\printlist{organization}%
\newunit
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
\DeclareBibliographyDriver{inbook}{%
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others}%
\setunit{\space\textendash\space}\newblock
\usebibmacro{maintitle+title}%
\newunit\newblock
\usebibmacro{in:}%
\usebibmacro{byeditor+others}%
\newunit\newblock
\usebibmacro{maintitle+booktitle}%
\usebibmacro{bybookauthor}%
\newunit\newblock
\usebibmacro{maintitle+booktitle}%
\newunit\newblock
\printfield{edition}%
\newunit
\iffieldundef{maintitle}
{\printfield{volume}%
\printfield{part}}
{}%
\newunit
\printfield{volumes}%
\newunit\newblock
\usebibmacro{series+number}%
\newunit\newblock
\printfield{note}%
\newunit\newblock
\usebibmacro{publisher+location+date}%
\newunit\newblock
\usebibmacro{chapter+pages}%
\newunit\newblock
\iftoggle{bbx:isbn}
{\printfield{isbn}}
{}%
\newunit\newblock
\usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
\usebibmacro{pageref}%
\newunit\newblock
\iftoggle{bbx:related}
{\usebibmacro{related:init}%
\usebibmacro{related}}
{}%
\usebibmacro{finentry}}
我
答案1
关于小写作者的名字问题,我无法用 frenchb(法语的 babel 模块)来表达,因为在序言中接下来的一行中我无法采用这种行为。
关于作者姓名以小写字母显示的问题,可以通过在序言中(在 babel 和 biblatex 的调用之后)添加以下行来告诉frenchb
(babel
法语模块)不要这样做:
\DefineBibliographyExtras{french}{\restorecommand\mkbibnamefamily}