我正在写一篇论文,其中引言是法语的,而章节是英语的。我想在引言和章节中引用一些论文,并使用适当的介词。例如,我想引用作者 1 和作者 2 于年份 1 发表的“论文 1”,这样在引言中会产生“作者 1 et 作者 2(年份)”,在章节中会产生“作者 1 and 作者 2”(年份),这两个参考文献都对应于末尾参考页中的一个条目(其中它是“et”还是“and”并不重要)。可以吗?我使用 natbib 和 econ-aer.bst 作为参考书目。
我曾尝试使用:
\newcommand*{\andname}{et }
\addto \captionsenglish {\renewcommand*{\andname}{and }}
\addto \captionsfrench {\renewcommand*{\andname}{et }}
\newcommand*{\liaisonname}{et }
\addto \captionsenglish {\renewcommand*{\liaisonname}{and }}
\addto \captionsfrench {\renewcommand*{\liaisonname}{et }}
\andname
并在 econ-aer.bst中将“and”替换为FUNCTION {bst.and}
& FUNCTION {bst.ands}
,将“and”替换\liaisonname
为FUNCTION {bst.cite.and}
& FUNCTION {bst.cite.ands}
。这样就可以选择使用“et”还是“and”,并在文本和参考页面中使用不同的介词,但这并不能满足我的要求。
以下是参考书目样式的链接:http://shirotakeda.org/en/tex/econ-bst.html
举个例子(在这个例子中,引用是“Author1和作者 2 (2003)”,而我希望在引言和章节中都使用“作者 1等Author2 (2003)” 引言中写道):
\documentclass[a4paper,12pt]{report}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{natbib}
\usepackage[frenchb,english]{babel}
\newcommand*{\andname}{et }
\addto \captionsenglish {\renewcommand*{\andname}{and }}
\addto \captionsfrench {\renewcommand*{\andname}{et }}
\newcommand*{\liaisonname}{et }
\addto \captionsenglish {\renewcommand*{\liaisonname}{and }}
\addto \captionsfrench {\renewcommand*{\liaisonname}{et }}
\begin{document}
\selectlanguage{french}
\chapter{Introduction générale}
Bla bla bla bla bla bla bla \cite{author12003}.
\selectlanguage{english}
\chapter{A Fancy Title}
Bla bla bla bla bla bla bla \cite{author12003}.
\selectlanguage{english}
\bibliographystyle{econ-aer}
\renewcommand\bibname{References}
\bibliography{biblio}
\end{document}
biblio.bib 中的条目是:
@Article{author12003,
author={Author1 and Author2},
title={{Title}},
journal={Journal},
year=2003,
volume={71},
number={5},
pages={1491--1517},
month={09}}
答案1
natbib
\bibitem
通过读取参考书目中的可选参数/来获取作者年份信息\harvarditem
。但由于参考书目通常包含在文档末尾,因此该信息来得太晚而无法使用,因此 LaTeX 将其保存在文件中.aux
,以便可以从文档开头使用。
(参考书目.bbl
)包含以下行
\harvarditem[Author1 \andname{} Author2]{Author1 \andname{} Author2}{2003}{author12003}
.aux
然后将其写入
\bibcite{author12003}{{1}{2003}{{Author1 and{} Author2}}{{Author1 and{} Author2}}}
为什么会发生这种情况?当 LaTeX 向.aux
文件写入内容时,它会扩展写入的文本,请参阅关于写入和读取辅助文件(.aux、.toc 等)的基础知识.aux
。写入的位置\andname
具有含义and
,因此最终会出现在.aux
文件中。
一个简单的解决方案是使其\andname
坚固。确保在写入文件时不会扩展.aux
,以便.aux
包含
\bibcite{author12003}{{1}{2003}{{Author1 \andname{} Author2}}{{Author1 \andname{} Author2}}}
与您已应用于文件的更改一起.bst
(将更改的文件重命名为econ-aer-ml.bst
)
--- econ-aer.bst 2018-07-20 15:27:43.069689500 +0200
+++ econ-aer-ml.bst 2018-07-20 14:53:32.187363500 +0200
@@ -228,7 +228,7 @@
% String replaced with _ in "Mr. A _ Mr. B "
%
FUNCTION {bst.and}
-{ ", and " }
+{ " \andname{} " }
% { " and " } % (default)
%%% String used to separate author names in references (more than two authors).
@@ -236,21 +236,21 @@
% String replaced with _ in "Mr. A, Mr. B _ Mr. C"
%
FUNCTION {bst.ands}
-{ ", and " } % (default)
+{ " \andname{} " } % (default)
%%% String used to separate author names in citation part.
%
% String replaced with _ in "Mr. A _ Mr. B "
%
FUNCTION {bst.cite.and}
-{ " and " } % (default)
+{ " \andname{} " } % (default)
%%% String used to separate author names in citation part (more than two authors).
%
% String replaced with _ in "Mr. A, Mr. B _ Mr. C"
%
FUNCTION {bst.cite.ands}
-{ " and " } % (default)
+{ " \andname{} " } % (default)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
数学家协会
\documentclass[a4paper,12pt]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{natbib}
\usepackage[frenchb,english]{babel}
\usepackage{etoolbox}
\newrobustcmd*{\andname}{et}
\addto \extrasenglish {\renewrobustcmd*{\andname}{and}}
\addto \extrasfrench {\renewrobustcmd*{\andname}{et}}
\newrobustcmd*{\liaisonname}{et}
\addto \extrasenglish {\renewrobustcmd*{\liaisonname}{and}}
\addto \extrasfrench {\renewrobustcmd*{\liaisonname}{et}}
%\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Article{author12003,
author={Author1 and Author2},
title={{Title}},
journal={Journal},
year=2003,
volume={71},
number={5},
pages={1491--1517},
month={09}}
\end{filecontents}
\begin{document}
\selectlanguage{french}
\chapter{Introduction générale}
Bla bla bla bla bla bla bla \cite{author12003}.
\selectlanguage{english}
\chapter{A Fancy Title}
Bla bla bla bla bla bla bla \cite{author12003}.
\selectlanguage{english}
\bibliographystyle{econ-aer-ml}
\renewcommand\bibname{References}
\bibliography{\jobname}
\end{document}
给出
biblatex
提供开箱即用的多种语言支持。因此,如果您不必使用natbib
和econ-aer
,您可能需要考虑切换到biblatex
。请参阅bibtex 与 biber 以及 biblatex 与 natbib 的比较和要切换到 biblatex 该怎么做?。
\documentclass[french,british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=authoryear, backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
\cite{sigfridsson}
\selectlanguage{french}\cite{sigfridsson}
\selectlanguage{british}\cite{sigfridsson}
\printbibliography
\end{document}