在撰写简历时,我想添加一些我自己的论文的参考书目,但也添加一些描述我所修课程的参考书目。我的策略是将那些修过的课程放在一个特殊的类别中(例如@book
),并打印单独的参考书目,如下所示:
\documentclass{article}
\title{Curriculm Vitae}
\author{R. Reventlov Giskard}
\usepackage%
[backend=biber,%
style=publist]%
{biblatex}
\plauthorname[R. Giskard]{Reventlov}
\addbibresource{articles.bib}
\addbibresource{courses.bib}
\begin{document}
\maketitle
\nocite{*}
% MY ARTICLES
\printbibliography[title={Published Articles}, type=article]
% COURSES [BOOKS] BY OTHERS
\printbibliography[title={Courses Taken}, type=book]
\end{document}
命令\printbibliography
应该打印类似这样的内容:
已发表文章
1 2006(与 R. Daneel Olivaw 合作)“重温机器人三大定律”。
2 2005.“机器人第零定律”。
修读课程
3 2004苏珊·卡尔文。机器人技术的实用方面。
4 2003汉·法斯托尔夫和瓦西莉亚·法斯托尔夫。如何解读和影响人类和机器人的情绪。
相反,第四个条目被错误地打印如下:
4 2003(与 Han Fastolfe 和 Vasilia Fastolfe 合作)。如何解读和影响人类和机器人的情绪。
我怎样才能防止biblatex-publist
别人暗中让我成为这第四个条目(或者所有@book
条目)的共同作者?
注 1
在我的完整代码中,我声明了一个特殊的条目类型,@course
如下所示:
\DeclareBibliographyAlias{course}{book}
然后调用:
\printbibliography[title={Courses Taken}, type=course]
在两种情况下,错误仍然存在。
笔记2
如果没有的话,输出style=publist
将会是这样的:
已发表文章
1R. Reventlov Giskard 和 R. Daneel Olivaw (2006)。“重温机器人三大定律”。
2R. Reventlov Giskard (2005).“机器人第零定律”。
修读课程
3苏珊·卡尔文(2004)。机器人技术的实用方面。
4Han Fastolfe 和 Vasilia Fastolfe (2003)。如何解读和影响人类和机器人的情绪。
OP 编辑 1
我已经测试了以下版本的代码@moewe (唯一的变化是从“R. Giskard Reventlov”中删除“R.”并添加“Susan Calvin”作为“appleby”的合著者):txt.do/1fc7k
但是输出是:
请注意,此处重要的共同作者是“appleby”条目的共同作者。不应说“(with ...)”,因为 Giskard (the pluauthorname
) 不是“appleby”条目的共同作者。
如果您感兴趣的话,这是日志文件:txt.do/1fcz2
OP 编辑 2
按照建议安装了 vanilla TeX Live 后@moewe 对他的回答的评论,我们似乎距离解决问题只有一步之遥。相同的输入返回以下输出:
(亮点是我的。)
这是日志文件:txt.do/1fg0o
以防万一,我不介意丢掉等人功能,因为我正在设置maxnames=99
。
答案1
更新正如所提到的斯皮茨,的开发人员biblatex-publist
已经发布了 1.20 版本,对这种稍微违反直觉的行为进行了修复。
以前 (< v1.20)biblatex-publist
假设您是所列作品的合著者。如果我理解样式所做的所有工作,那么\plauthorname
名称中是否存在 a 的信息是可用的,我们只需要利用它。
诀窍是检查nonplauthors
/nonpleditors
是否相等listtotal
。如果它们相等,\plauthorname
则作者/编辑之间不存在。在这种情况下,我们避免使用“with”和括号。
的整个定义已经比较完整,这里我们只是在原来的定义上bpl:handlenames
添加了两个测试。\ifthenelse{\value{nonpl#1s}=\value{listtotal}}
publist.bbx
以下代码需要biblatex-publist
v.1.18 (2020/07/31)。旧版本可能不会出现错误,但输出可能不会如预期。
\documentclass{article}
\usepackage%
[backend=biber,%
style=publist]%
{biblatex}
\plauthorname[Giskard]{Reventlov}
\makeatletter
\renewbibmacro{bpl:handlenames}[1][author]{%
\bpl@ifplauthor{\namepartgiven}{\namepartprefix}{\namepartfamily}%
{\global\toggletrue{isplauthor}\stepcounter{pl#1}}%
{\global\togglefalse{isplauthor}}%
%
% Calculate real list stop
\ifnumless{\value{liststop}}{\value{maxnames}}
{\setcounter{realliststop}{\theliststop}}
{\setcounter{realliststop}{\value{minnames}}}%
%
% First case: plauthorhandling=highlight
\if@hlauthor%
% Highlight plauthor(s)
\usebibmacro{bpl:omissiondelim}[#1]%
\iftoggle{isplauthor}{%
\plauthorhl{%
\if@givenfirst% given name first
\ifgiveninits
{\ifdefvoid{\namepartgiveni}{}{\namepartgiveni\addspace}}%
{\ifdefvoid{\namepartgiven}{}{\namepartgiven\addspace}}%
\ifdefvoid{\namepartprefix}%
{}%
{\namepartprefix\addspace}%
\namepartfamily%
\else% family name first
\ifdefvoid{\namepartprefix}%
{}%
{\namepartprefix\addspace}%
\namepartfamily%
\ifgiveninits
{\ifdefvoid{\namepartgiveni}{}{\addcomma\addspace\namepartgiveni\addspace}}%
{\ifdefvoid{\namepartgiven}{}{\addcomma\addspace\namepartgiven\isdot\addspace}}%
\fi
}%
\ifnumequal{\value{listcount}}{\value{liststop}}{}{\usebibmacro{name:andothers}}%
}{%
\ifnumgreater{\value{listcount}}{\value{realliststop}}{}{%
\if@givenfirst% given name first
\ifgiveninits
{\ifdefvoid{\namepartgiveni}{}{\namepartgiveni\addspace}}%
{\ifdefvoid{\namepartgiven}{}{\namepartgiven\addspace}}%
\ifdefvoid{\namepartprefix}%
{}%
{\namepartprefix\addspace}%
\namepartfamily%
\else% family name first
\ifdefvoid{\namepartprefix}%
{}%
{\namepartprefix\addspace}%
\namepartfamily%
\ifgiveninits
{\ifdefvoid{\namepartgiveni}{}{\addcomma\addspace\namepartgiveni\addspace}}%
{\ifdefvoid{\namepartgiven}{}{\addcomma\addspace\namepartgiven\isdot\addspace}}%
\fi
}%
\usebibmacro{name:andothers}%
}%
%
% Second case: plauthorhandling=omit
\else% \if@hlauthor false
\ifthenelse{\value{listcount}=1}%
{\ifthenelse{\value{nonpl#1s}>0}%
{\ifthenelse{\value{pl#1s}=0}
{}
{\bibopenparen\bibstring{with}\addspace}}%
{}%
\iftoggle{isplauthor}%
{\global\toggletrue{plauthorprecedes}}%
{\global\togglefalse{plauthorprecedes}}%
}%
{}%
% Exclude omitted author
\iftoggle{isplauthor}%
{% <- TRUE condition
\global\toggletrue{hadplauthor}%
}% <- end TRUE condition
{% <- FALSE condition
\stepcounter{nonpl#1}%
\ifthenelse{\value{listcount}=1}%
{\global\togglefalse{hadplauthor}}%
{%
\iftoggle{plauthorprecedes}%
{}%
{%
\ifnumgreater{\value{listcount}}{\value{realliststop}}{}{%
\ifnumless{\value{nonpl#1}}{\value{nonpl#1s}}%
{\multinamedelim}%
{\printdelim[#1]{bplfinalnamedelim}}%
}%
}%
}%
\ifnumgreater{\value{listcount}}{\value{realliststop}}{}{%
\ifgiveninits
{\ifdefvoid{\namepartgiveni}{}{\namepartgiveni\addspace}}%
{\ifdefvoid{\namepartgiven}{}{\namepartgiven\addspace}}%
\ifdefvoid{\namepartprefix}{}{\namepartprefix\addspace}%
\global\togglefalse{plauthorprecedes}%
\namepartfamily%
}%
}% <- end FALSE condition
%
\usebibmacro{name:andothers}%
\ifthenelse{\value{nonpl#1s}>0\AND\value{listcount}=\value{liststop}}%
{\ifthenelse{\value{pl#1s}=0}
{}
{\unspace\bibcloseparen}}%
{}%
\fi% end of \if@hlauthor else condition
}
\makeatother
\begin{filecontents}{\jobname.bib}
@book{appleby,
author = {Humphrey Appleby},
title = {On the Importance of the Civil Service},
date = {2001},
}
@book{bppleby,
author = {Humphrey Bppleby and Someone Else},
title = {On the Importance of the Civil Service},
date = {2002},
}
@book{cppleby,
author = {Humphrey Cppleby and Someone Else and A. Third Person},
title = {On the Importance of the Civil Service},
date = {2003},
}
@article{reventlov:2,
author = {Giskard Reventlov and Someone Else},
title = {Turtles},
date = {2012},
}
@article{reventlov:1,
author = {Giskard Reventlov},
title = {Turtles},
date = {2011},
}
@article{reventlov:3,
author = {Giskard Reventlov and Ann Uthor and Bann Tuthor},
title = {Turtles},
date = {2013},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
% MY ARTICLES
\printbibliography[title={Published Articles}, type=article]
% COURSES [BOOKS] BY OTHERS
\printbibliography[title={Courses Taken}, type=book]
\end{document}
答案2
目前还未biblatex-publist
准备好应对这种情况。但是,我认为您可能会(误用)类型@review
来完成此类任务,因为该类型不考虑。或者,您可以基于plauthor
定义新的驱动程序。@course
@review
关于 的使用@review
,请参考手册。