Biblatex-apa 没有用西班牙语选项替换引文和参考文献中的 & 符号

Biblatex-apa 没有用西班牙语选项替换引文和参考文献中的 & 符号

我读到该文件包含防止出现“与”符号的spanish-apa.lbx命令,并使用“与”符号代替。但是,在使用 时,或者在使用西班牙语样式时使用任何其他多位作者的引文时,我似乎无法做到这一点。\setcounter{smartand}{0}y\parencitebiblatex-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}

相关内容