引文中作者姓名大写,参考书目中采用普通字母

引文中作者姓名大写,参考书目中采用普通字母

对于我的博士论文,我必须在引文标注中用大写字母排版作者的姓氏,但不要在参考书目中排版。所以,我的意思是:

引用: 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)以完全传播所有更改。

祝您 BibTeX 愉快!


附言:正如@MarcoDaniel 在评论中指出的那样,如果使用(或) 作为参考书目样式natbib,则 s 的很多功能都不可用。例如,该包的选项不起作用,引用生成宏的“带星号”变体(、等)也不起作用。(更准确地说,产生的输出与等相同。)apalikeapalikeCAPSlongnamesfirst\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 文件。

在此处输入图片描述

相关内容