我跟着Natbib 参考表并按\citet
预期工作。我希望作者的名字以小写字母显示,我该怎么做?
我想我应该这样做:
定义
\citenumfont
为字体声明或命令,如\itshape
或 [...]\textit
。
但我不知道这是什么意思。
在你点赞 lockstep 的答案之前:它不起作用,作者的名字不是小写,renew 命令无效。他的示例代码无法像现在这样编译。
更新:这是一个最小工作示例。
smallcap.tex
\documentclass[fleqn]{article}
\usepackage[numbers]{natbib}
\makeatletter
%\renewcommand*{\NAT@nmfmt}[1]{\textsc{#1}}
\def\NAT@nmfmt#1{\textsc{#1}}
\makeatother
\begin{document}
As mentioned in \citet{Biegler97}~\dots
\bibliographystyle{plainnat}
\bibliography{dummy}
\end{document}
虚拟文件
@BOOK{biegler97,
AUTHOR = {Lorenz T. Biegler and Ignacio E. Grossmann and Arthur W. Westerberg},
TITLE = {Systematic Methods of Chemical Process Design},
YEAR = {1997},
PUBLISHER = {Prentice Hall PTR, Upper Saddle River, NJ}
}
答案1
使用此numbers
选项,补丁会稍微复杂一些:
\usepackage{etoolbox}
\makeatletter
\patchcmd{\NAT@test}{\else\NAT@nm}{\else\NAT@nmfmt{\NAT@nm}}{}{}
\let\NAT@up\scshape
\makeatother
显然纳特比布作者忘记\NAT@nmfmt
在相关地点申请\NAT@test
为了得到et al.
罗马字体,
\usepackage{etoolbox,xstring}
\makeatletter
\patchcmd{\NAT@test}{\else\NAT@nm}{\else\NAT@nmfmt{\NAT@nm}}{}{}
\renewcommand{\NAT@nmfmt}{\expandafter\aliNAT@nmfmt\expandafter}
\newcommand\aliNAT@nmfmt[1]{{%
\noexpandarg
\def~{}%
\edef\temp#1\edef\temp{\detokenize\expandafter{\temp}}%
\begingroup\edef\x{\endgroup
\noexpand\StrSubstitute{\temp}{\detokenize{etal}}}\x
{\textnormal{et\nobreakspace al}}[\tempa]%
\textsc{\tempa}}}
\makeatother
答案2
要用小写字母引用作者,不是创建新.bst
文件是必要的——而是重新定义\NAT@nmfmt
负责格式化作者姓名的宏。(见这回答其他应用领域的问题\NAT@nmfmt
。)
\documentclass{article}
\usepackage{natbib}
\makeatletter
\renewcommand*{\NAT@nmfmt}[1]{\textsc{#1}}
\makeatother
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{Bli74,
author = {Blinder, Alan S.},
year = {1974},
title = {The economics of brushing teeth},
journal = {Journal of Political Economy},
volume = {82},
number = {4},
pages = {887--891},
}
\end{filecontents}
\begin{document}
As mentioned in \citet[99]{Bli74}~\dots
\bibliographystyle{plainnat}
\bibliography{\jobname}
\end{document}
答案3
摘自手册第 15 页natbib
:
数字引用可能以不同的字体打印。定义
\citenumfont
为字体声明,如\itshape
或甚至采用参数的命令,如\textit.
[命令] ...比自动添加斜体校正\renewcommand{\citenumfont}[1]{\textit{#1}}
更好。\itshape
因此,更改\citenumfont
不会影响 LaTeX 用于排版引文或参考书目中的作者姓名的字体。为此,您需要创建一个参考书目样式文件(扩展名.bst
),可能从头开始。查看文件makebst.tex(顺便说一下,由软件包的作者创建natbib
)。它可以在 TeX 或 LaTeX 下运行;运行它时,它会询问您很多关于所需参考书目样式的问题(带有预定义的答案选项)——包括一些关于作者姓名特殊字体的问题——然后使用此信息构建一个 .bst 文件。
附录:正如 @lockstep 在他的回答和对我的回答的评论中所指出的那样,如果你只想在引文,则不一定需要创建新.bst
文件:可以重新定义\NAT@nmfmt
宏。但是,如果希望作者和编辑者的名字在文件中以小写字母排版,则仍必须创建新的 .bst 文件参考书目部分还有——加你必须记住插入如下指令
\makeatletter
\def\NAT@nmfmt#1{\textsc{#1}}
\makeatother
从现在起,您编写的每篇文档的前言中都应包含此引用格式。您不妨直接告诉程序makebst.tex
这个偏好,然后一劳永逸地完成它,对吗?