Closed NotoOotori closed 3 years ago
TL;DR
如题, 如果英文参考文献中含有translator域, 现在的著录格式为
AUTHOR Title[TYPE]. TRANSLATOR, 译. Location: Publisher, Year.
我已阅读宏包文档, 并按照指示对文献设置了langid域, 在biblatex加载时设置了autolang选项, 并加入了babel宏包以及设置需要使用的语言, 不过问题还是在.
想请问一下如何针对英文文献, 将其中的"译"字改为"translator"或类似的单词.
MWE
\documentclass{ctexart} \begin{filecontents*}{refs.bib} @book{sally_history_1985, location = {Monterey, California}, title = {History of Algebraic Geometry}, isbn = {978-0-534-03723-9}, series = {Wadsworth Mathematics Series}, pagetotal = {xii+186}, publisher = {Wadsworth International Group, Belmont, {CA}}, author = {Dieudonné, Jean}, translator = {Sally, Judith D.}, date = {1985}, langid = {english}, mrnumber = {780183}, } \end{filecontents*} \usepackage[english]{babel} \usepackage{csquotes} % as the warning suggests \usepackage[% backend=biber,style=gb7714-2015,gbalign=gb7714-2015,gbpub=false,sortcites=true, autolang=other* ]{biblatex} \bibliography{refs} \begin{document} 引用\cite{sally_history_1985}. \printbibliography \end{document}
版本
This is XeTeX, Version 3.14159265-2.6-0.999992 (MiKTeX 20.12) (preloaded format=xelatex 2021.3.25) Package: biblatex 2020/08/23 v3.15a programmable bibliographies (PK/MW) File: gb7714-2015.bbx 2020/07/21 v1.0vbiblatex bibliography style
编译命令
latexmk %DOC% -synctex=1 -interaction=nonstopmode -file-line-error --shell-escape -xelatex
更新了相关宏包之后问题仍存在, 现在的版本为
This is XeTeX, Version 3.141592653-2.6-0.999993 (MiKTeX 21.3) (preloaded format=xelatex 2021.3.25) Package: biblatex 2020/12/31 v3.16 programmable bibliographies (PK/MW) File: gb7714-2015.bbx 2021/01/19 v1.0wbiblatex bibliography style
感谢,这个是我的问题,我以前也发现过类似的问题,但没有重视,实在是出现概率太小了,另外由于国标也没有对英文的文献做个格式规定,到底用什么词只能是由我来定,所以一直没有处理。 是用 trans. 或者 trans. by 或者 translated by 这个需要讨论一下,后面我和@leezeping 讨论一下统一一下。
稍等,我先给你一个解决方案,后面再细改。
先用下面的代码应急一下吧,使用了trans. by,你看看你们学校有什么要求没有,如果不符合要求,按照下面代码里面的逻辑你可以修改一下本地化字符串及其位置。
\documentclass{article}
\usepackage[backend=biber,style=gb7714-2015]{biblatex}%citexref=true
\usepackage{ctex}
\DefineBibliographyStrings{english}{
bytranslator= {Trans. by},
}
\makeatletter
\renewbibmacro*{name:andothers}{\bibauthorfont%
\ifboolexpr{
test {\ifnumequal{\value{listcount}}{\value{liststop}}}
and
test \ifmorenames
}{\ifnumgreater{\value{liststop}}{1}%
{\finalandcomma}%
{}%
\printdelim{andothersdelim}\printdelim{strandothersdelim}%
}{%当是译者的时候需要特殊处理:从7.2节看等,译前面加逗号,但从示例看等和译同时出现时,译前的逗号没有,比如:
%袁训来, 陈哲, 肖书海, 等.
%胡泳, 范海燕, 译.
%潘惠霞, 魏婧, 杨艳, 等译.
\ifcurrentname{translator}{\iffieldequalstr{usere}{chinese}{\addcomma\addthinspace}{}}{}%为了实现上述第二个示例情况做的处理
}}
\renewbibmacro*{bytranslator+others}{\bibauthorfont%
\ifnameundef{translator}
{}
{\iffieldequalstr{usere}{chinese}{}{\usebibmacro{bytranslator+othersstrg}}
%\setunit{\addspace}%
\printnames[bytranslator]{translator}%
\clearname{translator}%
%从macro*{bytranslator+othersstrg}%中可以看到当地化字符串格式的引用前的代码处理
%比如生成cotranslator等用于调用cotranslator所代表的当地化字符串
\iffieldequalstr{usere}{chinese}{\usebibmacro{bytranslator+othersstrg}}{}%“译”的位置换到下面来,即放到译者后面。
%\setunit{\addspace}%
\newunit}%
\usebibmacro{withothers}}
\newbibmacro*{bytranslator+othersstrg}{%
\def\abx@tempa{bytranslator}%
\ifnamesequal{translator}{commentator}
{\appto\abx@tempa{co}%
\clearname{commentator}}
{\ifnamesequal{translator}{annotator}
{\appto\abx@tempa{an}%
\clearname{annotator}}
{}}%
\ifnamesequal{translator}{introduction}
{\appto\abx@tempa{in}%
\clearname{introduction}}
{\ifnamesequal{translator}{foreword}
{\appto\abx@tempa{fo}%
\clearname{foreword}}
{\ifnamesequal{translator}{afterword}
{\appto\abx@tempa{af}%
\clearname{afterword}}
{}}}%
\iffieldequalstr{usere}{chinese}{\printtext{译}}
{\bibstring{\abx@tempa}}}
\makeatother
\begin{filecontents}{\jobname.bib}
@Book{GPS1988--,
Title = {外国出版史},
Author = {{昂温, G} and {昂温, P S}},
Publisher = {中国书籍出版社},
Translator = {陈生诤},
Year = {1988},
Location = {北京}
}
@book{sally_history_1985,
location = {Monterey, California},
title = {History of Algebraic Geometry},
isbn = {978-0-534-03723-9},
series = {Wadsworth Mathematics Series},
pagetotal = {xii+186},
publisher = {Wadsworth International Group, Belmont, {CA}},
author = {Dieudonné, Jean},
translator = {Sally, Judith D.},
date = {1985},
mrnumber = {780183},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
结果为:
图片传不上了,所以你自己编译一下看看。
编译出来的效果很好, 感谢及时的回复!
TL;DR
如题, 如果英文参考文献中含有translator域, 现在的著录格式为
我已阅读宏包文档, 并按照指示对文献设置了langid域, 在biblatex加载时设置了autolang选项, 并加入了babel宏包以及设置需要使用的语言, 不过问题还是在.
想请问一下如何针对英文文献, 将其中的"译"字改为"translator"或类似的单词.
MWE
版本
编译命令