我正在使用moderncv
documentclass 创建我的简历,我需要参考列表以遵守 APA 指南。我知道biblatex
提供排序选项,但不幸的moderncv
是不支持biblatex
。我正在使用multibib
将apacite
我的参考资料分成不同的子列表。
\documentclass[11pt,a4paper,sans]{moderncv}
\moderncvstyle{casual}
\moderncvcolor{grey}
\usepackage{apacite}
\usepackage[scale=0.75]{geometry}
\firstname{John}
\familyname{Doe}
\makeatletter % subheadings in multibib as \subsection
\renewenvironment{thebibliography}[1]
{\subsection*{\refname}%
\@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}%
\list{\@biblabel{\@arabic\c@enumiv}}%
{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\@openbib@code
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
\sloppy
\clubpenalty4000
\@clubpenalty \clubpenalty
\widowpenalty4000%
\sfcode`\.\@m}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}
\makeatother
\usepackage{multibib}
\newcites{articles,conferences}{{Articles},{Conference contributions}}
\begin{document}
\maketitle
\section{References}
\nocitearticles{article1,article2}
\bibliographystylearticles{apacite}
\bibliographyarticles{articles}
\nociteconferences{conference1,conference2}
\bibliographystyleconferences{apacite}
\bibliographyconferences{conferences}
\end{document}
有没有办法apacite
按年份对出版物进行排序?我尝试手动分配从 1 到n添加到 bib 文件中每个出版物的 -attributes中key
,但它仅用于引用。此外,\phantom
在作者姓名中添加 -characters 也不起作用。
此外,参考资料会横跨整个页面的宽度,而不是只打印在右栏中。有什么办法可以解决这个问题吗?
答案1
我还没有找到解决这个问题的自动化方法,但手动排序apacite
参考文献列表\APACSortNoop
是一种可能。要对条目进行排序,请{{\APACSortNoop{x}}
在第一作者姓名前添加并替换X数字从 1 到n。参考文献将按升序排列,如本例所示:
@article{article1,
Author = {{\APACSortNoop{1}}Doe, John and Jane, Doe},
Title = {Title},
Year = {2012},
Journal = {Journal},
Pages = {1--2},
Volume = {1}
}
@article{article2,
Author = {{\APACSortNoop{2}}Doe, John and Bar, Foo},
Title = {Title},
Year = {2009},
Journal = {Journal},
Pages = {1--2},
Volume = {1}
}
我还找到了解决引用列表横跨两列的问题的方法。不过这很麻烦。我相信一定有更好的方法来处理这个问题。
将每个参考列表嵌入到一个小页面中,手动设置子部分和填充,如下所示,适用于 DIN A4 纸上的标准描述列宽度:
\usepackage{multibib}
\newcites{articles,conferences}{{},{}}
\section{References}
\vspace{-0.1cm}\subsection{Publications}
\vspace{-0.45cm}\hspace{3.15cm}\begin{minipage}{12.6cm}
\nocitearticles{article1,article2}
\bibliographystylearticles{apacite}
\bibliographyarticles{articles}
\end{minipage}
\vspace{0.2cm}\subsection{Conference contributions}
\vspace{-0.45cm}\hspace{3.15cm}\begin{minipage}{12.6cm}
\nociteconferences{conference1,conference2}
\bibliographystyleconferences{apacite}
\bibliographyconferences{conferences}
\end{minipage}
答案2
对于那些仍然遇到这个问题的人来说:moderncv
似乎与现在兼容biblatex-apa
。这使得可以按降序对书目进行排序(sorting=ydnt
)而无需 @crash 提出的技巧。
multibib
此外,我更喜欢所谓的细分书目(手册第 3.11.4 节),而不是使用多个书目(例如“论文”、“书籍”) biblatex
。非常简单。这是我的 MWE:
\documentclass{moderncv}
\moderncvstyle{classic}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=apa,sortcites=true,sorting=ydnt,backend=biber]{biblatex}
\DeclareLanguageMapping{american}{american-apa}
\bibliography{test}
\usepackage{filecontents}
\begin{filecontents}{test.bib}
@article{citation01,
Author = {Doe, John and Roe, Jane},
Journal = {Fancy Journal},
Pages = {123--145},
Title = {Lorem ipsum dolor sit amet, consectetur adipiscing elit},
Volume = {2},
Year = {2012}}
@article{citation02,
Author = {Doe, John and Roe, Jane},
Journal = {Fancy Journal},
Pages = {12--34},
Title = {Lorem ipsum dolor sit amet, consectetur adipiscing elit.},
Volume = {1},
Year = {2014}}
@book{citation03,
Author = {Doe, John and Roe, Jane},
Title = {Lorem ipsum dolor sit amet, consectetur adipiscing elit.},
publisher = {Company},
location = {Somewhere},
Year = {2013}}
\end{filecontents}
\name{John}{Doe}
\title{CV}
\email{[email protected]}
\begin{document}
\makecvtitle
\section{Education}
\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}
\nocite{*}
\printbibheading[title={Publications}]
\printbibliography[type=article,heading=subbibliography,title={Papers}]
\printbibliography[type=book,heading=subbibliography,title={Books}]
\end{document}
答案3
详细说明\APACSortNoop
@crsh提供的快捷方式:
该命令实际上比这更强大。如果您只想修复具有相同第一作者的少数参考文献的顺序,则无需\APACSortNoop
在每个条目中包含从头到尾对整个列表进行排序。该命令的作用是欺骗 BibTeX 将其参数视为作者姓名字符串的一部分,尽管参数字符串本身不会作为输出打印在参考书目中。因此,该命令只会影响排序:在这种特殊情况下,条目将按参数字符串作为第一作者姓名的前缀进行排序。
您可以使用以下方法\APACSortNoop
按出版年份按时间顺序列出具有相同第一作者的条目(改编@crsh 的示例):
@article{article1,
Author = {{\APACSortNoop{Doe2012}}Doe, John and Jane, Doe},
Title = {Title},
Year = {2012},
Journal = {Journal},
Pages = {1--2},
Volume = {1}
}
@article{article2,
Author = {{\APACSortNoop{Doe2009}}Doe, John and Bar, Foo},
Title = {Title},
Year = {2009},
Journal = {Journal},
Pages = {1--2},
Volume = {1}
}
@article{article3,
Author = {Smith, John and Foo, Bar},
Title = {Title},
Year = {2009},
Journal = {Journal},
Pages = {1--2},
Volume = {1}
}
这样,您就告诉 BibTeX 按 (1) 作者姓氏和 (2) 出版年份升序排序。请注意,对于没有发生同作者问题的条目,您不需要该命令(如article3
),尽管包含它也不会有什么坏处(例如,如果您想自动执行整个过程)。