我读到该文件包含防止出现“与”符号的spanish-apa.lbx
命令,并使用“与”符号代替。但是,在使用 时,或者在使用西班牙语样式时使用任何其他多位作者的引文时,我似乎无法做到这一点。\setcounter{smartand}{0}
y
\parencite
biblatex-apa
梅威瑟:
\documentclass{article}
\usepackage[english,spanish]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[style=apa,backend=biber]{biblatex}
\DeclareLanguageMapping{spanish}{spanish-apa}
\usepackage{csquotes}
\begin{filecontents}{refs.bib}
@book{Guy2010,
Author = {Some Guy and Another Dude},
Publisher = {A Publisher},
Title = {A reference book to everything},
Year = {2010}
}
\end{filecontents}
\addbibresource{refs.bib}
\begin{document}
Localisation is a headache. \parencite{Guy2010}
\printbibliography
\end{document}
西班牙语lbx
文件是最新的,并且一切总体上都按预期运行。
编辑:
我按照下面给出的说明操作(请参阅 Alan Munn 的回答),但结果发现我做错了。在我创建了正确的本地 texmf 结构来将更新的文件托管在应在的位置后,一切都按预期运行。非常感谢您的专业知识!
答案1
该样式的默认设置spanish-apa
是所有“and”都被&替换,即不会实现为“y”或“e”。
由于我不太明白的原因,在任何地方更改计数器的值都没有效果。我认为这是由于文档中biblatex
关于如何加载本地化文件的以下描述:
所有本地化模块均按文档主体中的需求加载。
因此,如果我复制一份spanish-apa.lbx
并注释掉该\setcounter{smartand}{0}
行,我就可以更改前言中的计数器的值,一切将按预期工作(0 = 始终为“&”,1 = 为“y”或“e”取决于上下文,2 = 始终为“y”,3 = 始终为“e”)。
简单的解决方案
Ulrike 答案中的简单解决方案可能是最容易实现的:
\begin{document}
\setcounter{smartand}{1}
\selectlanguage{spanish}
更永久的解决方案
因此目前(除非有人可以解释如何克服这种行为),您需要制作一个本地副本,spanish-apa.lbx
并将该行注释掉,然后在序言中\setcounter
设置您自己的值。smartand
要制作文件的本地副本.lbx
,最好将其重命名为其他名称,以便您始终知道您正在使用修改后的副本。复制的文件应位于与您的.tex
文件相同的文件夹中(如果您只执行一次此操作),或位于本地texmf
文件夹中的texmf/tex/latex/biblatex
。然后,spanish-apa
您无需加载,而是加载重命名的副本。以下是您的文档的示例。我将本地副本命名为smartand-spanish-apa
。
\documentclass{article}
\usepackage[english,spanish]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[style=apa,backend=biber]{biblatex}
\DeclareLanguageMapping{spanish}{smartand-spanish-apa}
\setcounter{smartand}{3} % 0, 1, 2 or 3
\usepackage{csquotes}
\begin{filecontents}{\jobname.bib}
@book{Guy2010,
Author = {Some Guy and Another Dude},
Publisher = {A Publisher},
Title = {A reference book to everything},
Year = {2010}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
Localisation is a headache. \parencite{Guy2010}
\printbibliography
\end{document}
答案2
smartand 值在 spanish.lbx 中使用,而 spanish.lbx 由 spanish-apa.lbx 加载。因此您没有机会更改它。但您可以这样做:
\documentclass{article}
\usepackage[english,spanish]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[style=apa,backend=biber]{biblatex}
\DeclareLanguageMapping{spanish}{spanish-apa}
%reactivate smartand:
\makeatletter
\DefineBibliographyExtras{spanish}
{\setcounter{smartand}{1}% or some other value
\let\lbx@finalnamedelim=\lbx@es@smartand
\let\lbx@finallistdelim=\lbx@es@smartand}
\makeatother
\usepackage{csquotes}
\begin{filecontents}{refs.bib}
@book{Guy2010,
Author = {Some Guy and Another Dude},
Publisher = {A Publisher},
Title = {A reference book to everything},
Year = {2010}
}
\end{filecontents}
\addbibresource{refs.bib}
\begin{document}
Localisation is a headache. \parencite{Guy2010}
\printbibliography
\end{document}
编辑
另一种方法是在文档开始后更改该值并触发语言设置的重新评估:
\begin{document}
\setcounter{smartand}{1}
\selectlanguage{spanish}