我正在用英语写一份报告,引用许多其他语言的文章(例如意大利语、瑞典语、挪威语......)
但是,即使我添加了该autolang=hyphen
选项biblatex
,并将该选项添加langid
到每个非英语文章中,biber
仍然LaTeX
无法正确格式化我的参考书目。
我想要的是:参考书目中的句子风格符合语言的大写规则。因此,例如在德语中,许多单词通常大写。因此,Loew 的标题应为(遵循句子风格):北德意志联邦共和国森林地表附生植物生存状况. 每个引用都应针对给定的语言进行设置(由 给出langid
)。
另外,我想biblatex 的句子风格忽略期刊标题。biblatex 手册中说,既为又titlecase
为 设定了(但书名仍为大写)。到目前为止,我找不到解决方法,但我更希望title
journaltitle
series
title
句子风格以及journaltitle
大写。
次要问题:
也许有人可以解释一下,为什么斜体水龙骨约翰逊的文章中的单词是否全部大写?
我正在使用biber
和pdflatex
基于的自定义参考书目样式(此处未给出)authoryear
。(通常,我也使用babel
、fontenc
和lmodern
,但它们对于 MWE 来说不是必需的)
编辑:如果我想显示已编译的文档,我是否需要上传它或者有没有办法做到这一点stackexchange
?
谢谢各位好心人!
梅威瑟:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{current.bib}
@Article{Johnson1921,
author = {Johnson, Duncan S.},
title = {{\textit{Polypodium vulgare}} as an Epiphyte},
volume = {72},
number = {4},
pages = {237--244},
date = {1921},
groups = {Accidental Epiphytes},
journaltitle = {The University of Chicago Press},
}
@Book{Magnin1895,
author = {Magnin, A.},
title = {Florule adventive des Saules T{\^e}tards de la r{\'e}gion Lyonnnaise},
publisher = {Librairie G{\'e}n{\'e}rale Henri Georg},
year = {1895},
groups = {Accidental Epiphytes},
langid = {french},
}
@Article{Steenis1925,
author = {van Steenis, C. G. G. J.},
title = {Over de phanerogamen en vaatkryptogamen voorkomende op knotwilgen in Nederland},
pages = {360--406},
date = {1925},
journaltitle = {Nederlandse Kruidk. Arch.},
langid = {dutch},
}
@Article{Staeger1908,
author = {St{\"{a}}ger, Rob},
title = {Beitrag zur schweizerischen ``Epiphytenflora''},
pages = {17--90},
date = {1908},
journaltitle = {Mittheilungen der Naturforschenden Gesellschaft in Bern},
langid = {ngerman},
}
@Article{Loew1892,
author = {Loew, E.},
title = {Anf{\"{a}}nge epiphytischer Lebensweise bei Gef{\"{a}\ss}plfanzen Norddeutschlands},
volume = {33},
pages = {63--74},
date = {1892},
journaltitle = {Verhandlungen des Botanischen Vereins f{\"{u}}r die Provinz},
langid = {ngerman},
}
@Book{Schimper1888,
title = {Die epiphytische Vegetation Amerikas},
publisher = {Universit{\"{a}}t Bonn},
author = {Schimper, A. F. W.},
volume = {2},
series = {Botanische Mittheilungen aus den Tropen},
booktitle = {Botanische Mittheilungen aus den Tropen},
date = {1888},
langid = {ngerman},
location = {Jena},
}
\end{filecontents}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber,uniquename=init,autolang=hyphen,block=space,style=authoryear,useprefix=false]{biblatex}
\DeclareFieldFormat{titlecase}{\MakeSentenceCase{#1}}
\bibliography{current}
\begin{document}
\section*{Epiphytes are awesome!}
So this is my main document in English but citing from many sources of various languages \parencite[eg.][]{Steenis1925, Magnin1895, Johnson1921, Staeger1908, Loew1892, Schimper1888}
\printbibliography
\end{document}
答案1
您想要带星号的版本\MakeSentenceCase
\DeclareFieldFormat{titlecase}{\MakeSentenceCase*{#1}}
来自biblatex
文档,第 211-212 页,(重点是我的)
[
\MakeSentenceCase
/\MakeSentenceCase*
] 带星号的版本与常规版本不同,因为它考虑了字段中指定的条目语言langid
。如果langid
字段已定义并包含用\DeclareCaseLangs
[...] 声明的语言,则执行句子大小写转换。如果字段langid
未定义,则\DeclareCaseLangs
检查用 声明的语言列表中是否存在从语言选项派生的主文档语言。如果找到,则执行句子大小写转换,如果没有,则text
不会以任何方式更改。建议\MakeSentenceCase*
在格式化指令中使用而不是常规变体。
默认情况下也是journal(title)
大写的titlecase
,如果你想禁用它,请使用
\renewbibmacro*{journal}{%
\ifboolexpr{
test {\iffieldundef{journaltitle}}
and
test {\iffieldundef{journalsubtitle}}
}
{}
{\printtext[journaltitle]{%
\printfield[default]{journaltitle}%
\setunit{\subtitlepunct}%
\printfield[default]{journalsubtitle}}}}
避免水龙骨大写使用
title = {\textit{Polypodium vulgare} as an Epiphyte},
这里的问题是biblatex
需要将标题的首字母大写。因为括号biblatex
将整个\textit{Polypodium vulgare}
视为句子的首字母并将其大写,导致大喊大叫。