![如何更改 biblatex 中文章的引用样式?](https://linux22.com/image/419868/%E5%A6%82%E4%BD%95%E6%9B%B4%E6%94%B9%20biblatex%20%E4%B8%AD%E6%96%87%E7%AB%A0%E7%9A%84%E5%BC%95%E7%94%A8%E6%A0%B7%E5%BC%8F%EF%BC%9F.png)
我正在使用 biblatex 编辑我的论文参考书目,但在文学和法国,我们有非常具体的引用文件规则。我使用verbose
citestyle 和 bibstyle 将我的引用放在脚注中,但文章的引用样式不符合我的需求。这是我的示例:
\documentclass[french,a4paper,12pt,oneside]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{csquotes}
\usepackage[citestyle=verbose-trad2,citepages=omit,bibstyle=verbose,isbn=false,doi=false,sorting=ynt]{biblatex}
\defbibheading{bibliography}[\bibname]{\subsubsection*{#1}}
\renewcommand{\newunitpunct}[0]{\addcomma\addspace}
\renewcommand*{\mkibid}{\emph} % pour mettre ibid, op. cit. et loc.cit. en italique
%pour mettre "éditeur, ville, date":
\renewbibmacro*{publisher+location+date}{%
\printlist{location}%
\setunit*{\addcomma\space}%
\printlist{publisher}%
\setunit*{\addcomma\space}%
\usebibmacro{date}%
\newunit}
\DefineBibliographyStrings{french}{%
in = {dans}%
}
%pour mettre la date de l'édition utilisée juste après l'année originale
\renewbibmacro{date}{%
\DeclareFieldFormat{edition}{##1}%
\printfield{year}%
\addspace%
\printfield{edition}%
}
\DeclareFieldFormat{edition}{}
%\bibliography{bibliotheseA}
\begin{filecontents}{test.bib}
@article{TrillingCalvino1962,
title = {Calvino in musica},
author = {Trilling, Ossia},
date = {1962-01},
journaltitle = {Sipario},
volume = {XVII},
keywords = {2caa},
langid = {italian},
number = {189}
}
@book{ValeryEgo1992,
title = {Ego scriptor},
author = {Valéry, Paul},
date = {1992},
publisher = {{Gallimard}},
location = {{Paris}},
keywords = {2lit},
langid = {french}
}
\end{filecontents}
\addbibresource{test.bib}
\begin{document}
Some text.\autocite{ValeryEgo1992}
Other text.\autocite{TrillingCalvino1962}
\printbibliography
\end{document}
由于某种原因,书籍引用对我来说不起作用,但无论如何,这不是我的文档的问题。问题是文章引用的结果:
我希望引用如下:Trilling,Ossia,“音乐中的卡尔维诺”,西帕里奥,第 189 期,第 17 卷,1962 年。
或者更一般地:
<SURNAME>, <Name>, "<title>", *<journaltitle>*, n°<number>, vol.<volume>, <date>.
我可以更改书籍的顺序和样式,但无法更改文章的顺序和样式。有什么想法吗?
答案1
在biblatex
@article
s中number
,始终是 的细分volume
。如果在你的案例中体积是数字我可能倾向于交换输入中的两个字段,以保持与其他样式的一致性。我将首先展示一个解决方案,然后解释交换需要做什么volume
以及number
如果你坚持认为这是必要的。
以biblatex-ext
'sext-verbose-trad2
为基础,许多所需的更改只需通过修改标点符号宏即可完成。
\documentclass[french,a4paper,12pt,oneside]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[french=quotes]{csquotes}
\usepackage[backend=biber,
style=ext-verbose-trad2,
sorting=ynt,
articlein=false,
isbn=false, doi=false,
citepages=omit]{biblatex}
\renewcommand{\newunitpunct}{\addcomma\space}
\renewcommand*{\mkibid}{\emph}
\renewcommand*{\jourvoldelim}{\addcomma\space}
\renewcommand*{\volnumdelim}{\addcomma\space}
\DeclareFieldFormat[article,periodical]{volume}{\bibstring{number}~#1}
\DeclareFieldFormat[article,periodical]{number}{\bibstring{jourvol}~#1}
\renewcommand*{\volnumdatedelim}{\addcomma\space}
\DeclareFieldFormat{issuedate}{#1}
\renewbibmacro{edition}{}
\renewcommand*{\locdatedelim}{\addcomma\space}
\renewcommand*{\locpubdelim}{\addcomma\space}
\renewcommand*{\pubdatedelim}{\addcomma\space}
\renewbibmacro*{pubinstorg+location+date}[1]{%
\printlist{location}%
\iflistundef{#1}
{\setunit*{\locdatedelim}}
{\setunit*{\locpubdelim}}%
\printlist{#1}%
\setunit*{\pubdatedelim}%
\usebibmacro{date}%
\setunit{\addspace}%
\printfield{edition}%
\newunit}
\DefineBibliographyStrings{french}{%
in = {dans},
jourvol = {vol\adddot},
}
\begin{filecontents}{\jobname.bib}
@article{TrillingCalvino1962,
title = {Calvino in musica},
author = {Trilling, Ossia},
date = {1962-01},
journaltitle = {Sipario},
number = {XVII},
keywords = {2caa},
langid = {italian},
volume = {189},
}
@book{ValeryEgo1992,
title = {Ego scriptor},
author = {Valéry, Paul},
date = {1992},
publisher = {Gallimard},
location = {Paris},
edition = {4},
keywords = {2lit},
langid = {french},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Some text.\autocite{ValeryEgo1992}
Other text.\autocite{TrillingCalvino1962}
\printbibliography
\end{document}
如果坚持要交换volume
,还journal
需要修改bibmacro volume+number+eid
。
\documentclass[french,a4paper,12pt,oneside]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[french=quotes]{csquotes}
\usepackage[backend=biber,
style=ext-verbose-trad2,
sorting=ynt,
articlein=false,
isbn=false, doi=false,
citepages=omit]{biblatex}
\renewcommand{\newunitpunct}{\addcomma\space}
\renewcommand*{\mkibid}{\emph}
\renewcommand*{\jourvoldelim}{\addcomma\space}
\newcommand*{\numvoldelim}{\addcomma\space}
\DeclareFieldFormat[article,periodical]{number}{\bibstring{number}~#1}
\DeclareFieldFormat[article,periodical]{volume}{\bibstring{jourvol}~#1}
\renewbibmacro*{volume+number+eid}{%
\printfield{number}%
\setunit*{\numvoldelim}%
\printfield{volume}%
\setunit{\bibeidpunct}%
\printfield{eid}}
\renewcommand*{\volnumdatedelim}{\addcomma\space}
\DeclareFieldFormat{issuedate}{#1}
\renewbibmacro{edition}{}
\renewcommand*{\locdatedelim}{\addcomma\space}
\renewcommand*{\locpubdelim}{\addcomma\space}
\renewcommand*{\pubdatedelim}{\addcomma\space}
\renewbibmacro*{pubinstorg+location+date}[1]{%
\printlist{location}%
\iflistundef{#1}
{\setunit*{\locdatedelim}}
{\setunit*{\locpubdelim}}%
\printlist{#1}%
\setunit*{\pubdatedelim}%
\usebibmacro{date}%
\setunit{\addspace}%
\printfield{edition}%
\newunit}
\DefineBibliographyStrings{french}{%
in = {dans},
jourvol = {vol\adddot},
}
\begin{filecontents}{\jobname.bib}
@article{TrillingCalvino1962,
title = {Calvino in musica},
author = {Trilling, Ossia},
date = {1962-01},
journaltitle = {Sipario},
volume = {XVII},
keywords = {2caa},
langid = {italian},
number = {189},
}
@book{ValeryEgo1992,
title = {Ego scriptor},
author = {Valéry, Paul},
date = {1992},
publisher = {Gallimard},
location = {Paris},
edition = {4},
keywords = {2lit},
langid = {french},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Some text.\autocite{ValeryEgo1992}
Other text.\autocite{TrillingCalvino1962}
\printbibliography
\end{document}