我正在撰写博士论文,手稿中有两个版本的引言:一个是法语,另一个是英语。
我正在使用 apalike 参考书目样式。
\cite
当使用法语部分的命令时\citep
,我希望以法语显示文本中的信息。例如,我有“Author and Author”,但我想使用“Author et Author”。
答案1
apalike
是一种单语样式,只支持英语。您在引文中看到的“and”是硬编码的,无法轻松动态更改(您可以编辑文件.bst
以将“and”替换为其他内容,甚至是宏)。软件包中的样式babelbib
可以自动更改参考书目条目的语言,但软件包没有附带等效的apalike
。某些样式(例如软件包中的样式)harvard
已经使用 and ( ) 的宏\harvardand
,可以在您更改语言时重新定义它。但我想不出一个 BibTeX 样式/包可以自动使引文适应周围的语言。
由于您使用 标记了问题biblatex
,因此这里是使用该包的解决方案。请注意,诸如 之类的 BibTeX 样式apalike
与 完全不兼容biblatex
,因此切换到 需要做一些工作biblatex
,并且您无法继续使用apalike
,您必须找到不同的样式。请参阅bibtex 与 biber 以及 biblatex 与 natbib 的比较,要切换到 biblatex 该怎么做?和Biblatex 与 Biber:配置我的编辑器以避免未定义的引用。
我不知道有哪种biblatex
样式可以产生与 完全相同的输出apalike
,但您可以从标准authoryear
样式开始,并根据需要进行修改。这个网站上有很多关于此的问题,您可以在中找到一个很好的开始自定义 biblatex 样式的指南。
引用会biblatex
自动适应周围的语言等
\documentclass[french,british]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=authoryear, backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
\begin{otherlanguage}{french}
\chapter{French}
Bonjour \cite{sigfridsson}
\end{otherlanguage}
\chapter{English}
Hello \cite{sigfridsson}
\printbibliography
\end{document}
生产
如果你不喜欢法语引文中的小写字母,你可以使用以下方法禁用它们
\DefineBibliographyExtras{french}{\restorecommand\mkbibnamefamily}
也可以看看在 biblatex 中保留小写。
答案2
natbib
以下是使用和 的修改版本的解决方案apalike.bst
。首先,复制 并将apalike.bst
其放在与论文文件相同的文件夹中。在此示例中,我将文件命名为apalike-bilingual
。
您将在其中发现两个功能:
FUNCTION {format.lab.names}
和
FUNCTION {format.names}
在每个函数中,您都会发现包含的代码" and "
。这是您将要更改的代码。在format.lab.names
更改中:
{ " and " * s #2 "{vv~}{ll}" format.name$ * }
到
{ " \harvardand\ " * s #2 "{vv~}{ll}" format.name$ * }
原则上,这是您唯一需要做的事情,因为您只想更改引用标注。但为了完整性,您还需要更改函数label-names
。更改:
{ " and " * t * }
到
{ " \harvardand\ " * t * }
现在,此代码会生成一个apalike
使用\harvardand
宏作为其的版本。请注意,更改后的代码中的and
以下内容很重要,因为宏之后的空格会被吞噬。\
使用 Ulrike Fischer 在此处提供的解决方案:语言相关引用和 natbib现在,我们可以通过将法语版本添加到 来使\harvardand
命令对当前语言敏感。感谢 Ulrike 提供此解决方案,并感谢 moewe 指出我们可以直接使用,而不是像链接问题中那样使用条件。babel
\harvardand
\frenchcaptions
babel
\begin{filecontents}{\jobname.bib}
@article{twoauthors,
title={A cool paper},
author={Duck, A. and Marmot, A.},
journal={Journal of Irrelevant Science},
year={2019},
volume={1}}
\end{filecontents}
\documentclass{article}
\usepackage{natbib}
\bibliographystyle{apalike-bilingual}
\usepackage[french,english]{babel}
\usepackage{etoolbox}
\DeclareRobustCommand{\harvardand}{and}
\appto\captionsfrench{\DeclareRobustCommand{\harvardand}{et}}
\begin{document}
English citation: \cite{twoauthors}
\begin{otherlanguage}{french}
French citation: \cite{twoauthors}
\end{otherlanguage}
\bibliography{\jobname}
\end{document}