对于我的博士论文,我必须在引文标注中用大写字母排版作者的姓氏,但不要在参考书目中排版。所以,我的意思是:
引用: SCHULTZ, 1971
参考书目:Schultz, TW (1971):书名。
此外,对于几位作者,我应该使用连字符,如下所示:
乔希-彼得森,2013
有人能帮我做到这一点吗?谢谢。
我到目前为止尝试过的:(但我需要引用大写字母)
\documentclass[12pt,a4paper]{report}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage[authoryear]{natbib}
\bibliographystyle{apalike}
\begin{document}
blablabalbal~\citealp{aas2004modelling}
\bibliography{bibfile}
\end{document}
答案1
如果您想继续使用 BibTeX,我建议您按以下步骤操作:
在你的 TeX 发行版中找到该文件
apalike.bst
,复制一份,并将副本命名为 。apalikeCAPS.tex
(不要直接编辑 TEX 发行版的原始文件。)在文本编辑器中打开图块
apalikeCAPS.bst
。你用来编辑 tex 文件的程序就可以了。在此文件中,找到名为的函数
emphasize
。(该函数在我的 bst 文件副本中从第 200 行开始。)在此函数之后插入以下代码:
FUNCTION {makeuppercase} { duplicate$ empty$ { pop$ "" } { "\MakeUppercase{" swap$ * "}" * } if$ }
您可能已经猜到了,此函数将其参数大写。
找到函数
format.lab.names
。(它应该从第 848 行开始,以便插入新函数时可以创建 5 或 6 行新代码。)在此函数中,将行s #1 "{vv~}{ll}" format.name$
到
s #1 "{vv~}{ll}" format.name$ makeuppercase
此外,改变行
{ " and " * s #2 "{vv~}{ll}" format.name$ * }
到
{ "--" * s #2 "{vv~}{ll}" format.name$ * makeuppercase }
请注意,第二行经历了两处变化:
" and "
已被替换为"--"
(“en-dash”),并且makeuppercase
已插入到之后format.name$ *
。将文件保存
apalikeCAPS.bst
在包含主 tex 文件的目录中,或保存在 BibTeX 搜索的目录中。如果选择第二个选项,请确保也更新 TeX 发行版的 filaname 数据库。- 在您的主 tex 文件中,将指令更改
\bibliographystyle{apalike}
为\bibliographystyle{apalikeCAPS}
并执行完整的重新编译(latex-bibtex-latex-latex)以完全传播所有更改。
- 在您的主 tex 文件中,将指令更改
祝您 BibTeX 愉快!
附言:正如@MarcoDaniel 在评论中指出的那样,如果使用(或) 作为参考书目样式natbib
,则 s 的很多功能都不可用。例如,该包的选项不起作用,引用生成宏的“带星号”变体(、等)也不起作用。(更准确地说,产生的输出与等相同。)apalike
apalikeCAPS
longnamesfirst
\citet*
\citep*
\citet*
\citet
完整 MWE 的输出:
\RequirePackage{filecontents}
\begin{filecontents}{mybib.bib}
@misc{uno,
author = "Anna Author",
title = "Thoughts",
year = 3001,
}
@misc{due,
author = "Anne Author and Bertha Buthor",
title = "Further Thoughts",
year = 3002,
}
@misc{tre,
author = "Anne Author and Bertha Buthor and Carla Cuthor",
title = "Final Thoughts",
year = 3003,
}
\end{filecontents}
\documentclass{article}
\usepackage[authoryear]{natbib}
\bibliographystyle{apalikeCAPS}
\begin{document}
\citep{uno}, \citep{due}, \citep{tre}
\bibliography{mybib}
\end{document}
答案2
如果您切换到 BibLaTeX,您将能够非常轻松地完成这两件事:
\documentclass[12pt,a4paper]{report}
\usepackage[latin1]{inputenc}
\usepackage[style=authoryear, backend=biber]{biblatex}
\addbibresource{bibfile.bib}
%Authors in upper case in citations, normal font in bibliography
\renewcommand{\mkbibnamefamily}[1]{\ifcitation{\MakeUppercase{#1}}{#1}}
\renewcommand{\mkbibnameprefix}[1]{\ifcitation{\MakeUppercase{#1}}{#1}}
%Hyphen between author names
\renewcommand{\multinamedelim}{\space--\space}
\renewcommand{\finalnamedelim}{\space--\space}
\begin{document}
blablabalbal \textcite{aas2004modelling}
\printbibliography
\end{document}
编辑:作者姓名格式已简化。感谢 Marco Daniel 指出该ifcitation
命令的存在。
答案3
您可以使用宏来完成此操作,而无需更改apalike.bst
。
\begin{filecontents*}{\jobname.bib}
@article{one,
author={A. Uthor},
title={Title},
journal={Journal},
year=2001,
}
@article{two,
author={W. Riter and P. Enman},
title={Title},
journal={Journal},
year=2002,
}
@article{three,
author={A. Uthor and W. Riter and P. Enman},
title={Title},
journal={Journal},
year=2003,
}
\end{filecontents*}
\documentclass{article}
\usepackage{etoolbox}
\usepackage{expl3}
\usepackage[authoryear]{natbib}
\bibliographystyle{apalike}
\ExplSyntaxOn
\cs_new_protected:Npn \panniuppercase #1
{
\tl_set:Nx #1 { \tl_upper_case:V #1 }
}
\cs_generate_variant:Nn \tl_upper_case:n { V }
\cs_new_protected:Npn \pannihyphen #1 #2
{
\tl_gset:Nn #1 #2
\tl_greplace_once:Nnn #1 { ~ AND ~ } { - }
\tl_gset:Nx #1 { { \exp_not:V #1 } }
}
\ExplSyntaxOff
\makeatletter
\patchcmd{\NAT@split}
{\gdef\NAT@name}
{\pannihyphen\NAT@name}
{}{}
\patchcmd{\NAT@parse}
{\aftergroup}
{\panniuppercase\NAT@temp\aftergroup}
{}{\ddt}
\makeatother
\begin{document}
\citet{one} \citet{two} \citet{three}
\bibliography{\jobname}
\end{document}
该filecontents*
环境仅用于使示例独立。请使用您自己的 bib 文件。