
私は自分のテキストで直接引用をしようとしていますが、著者名の最初の文字だけを大文字にする必要があります。
何らかの理由でnatbibの\引用(大文字の C を使用) は、本文中の引用の最初の文字を大文字にしないため、\citet と \Citet の出力はまったく同じになります。
現在の状況
\citet[p. 32]{Christensen1997} --> CHRISTENSEN (1997, p. 32)
\Citet[p. 32]{Christensen1997} --> CHRISTENSEN (2013, p. 32)
意図した出力
\Citet[p.32]{Christensen1997} --> Christensen (1997, p. 32)
ページ番号を追加しない場合でも、これは当てはまることに注意してください。
\Citet{Christensen1997} --> Christensen (1997)
これが私の.bibファイルのエントリです
@book{Christensen1997,
address = {Boston},
author = {Christensen, Clayton M},
booktitle = {The management of innovation and change series},
publisher = {Harvard Business School Press},
title = {{The Innovator's Dilemma: When New Technologies Cause Great Firms to Fail}},
year = {1997}
}
私が使用している参考文献スタイルはABNT(リンク)
さらに詳しい情報が必要な場合はお知らせください。ありがとうございます!
答え1
abnt.bstの383行目を関数内で変更するformat.family.names
と、
"u" change.case$
に
"t" change.case$
これにより、引用コマンドで使用される文字列が変更されますが、参考文献の印刷には影響しません。「u」は文字列を大文字にし、「t」はタイトルを大文字にします。
\documentclass{article}
\usepackage{natbib}
\bibliographystyle{abnt}
\begin{document}
\citet{Christensen1997}
\Citet{Christensen1997}
\bibliography{\jobname.bib}
\end{document}
コマンドを使用する場合は、\citeauthor*
関数にも同様の変更を加える必要がありますformat.family.names.all
。
"l"
実際の要件に応じて、の代わりにを使用して文字列を小文字にすることもできます"t"
。その場合、\citet
名前は小文字になり、\Citet
最初の文字は大文字になります。
答え2
319-419行目には名前をフォーマットするコマンドがいくつかあります。
%==============================================================================
% Formata uma lista de nomes.
%
% Parm:
% os nomes a serem formatados
%==============================================================================
FUNCTION {format.names}
{
duplicate$ num.names$ 'n :=
#1 'i :=
"" 'names :=
{i n #1 + <}
{
duplicate$ duplicate$ i "{ll}{~jj}" format.name$
duplicate$ "others" =
n #3 >
i #2 =
and
or
{
pop$ pop$ names " et~al." *
n 'i :=
}{
"u" change.case$ swap$
i "{, f.}{~vv}" format.name$ *
names swap$ add.to.namelist
} if$ 'names :=
#1 i + 'i :=
} while$
pop$
names
duplicate$ #-1 #1 substring$ "." = {
#-2 global.max$ substring$
"\@." *
}
'skip$
if$
}
%==============================================================================
% Formata uma lista de sobrenomes.
%
% Parm:
% os nomes a serem formatados
%==============================================================================
FUNCTION {format.family.names}
{
duplicate$ num.names$ 'n :=
#1 'i :=
"" 'names :=
{i n #1 + <}
{
duplicate$ i "{ll}{~jj}" format.name$
duplicate$ "others" =
n #3 >
i #2 =
and
or
{
pop$ names " et~al." *
n 'i :=
}{
"u" change.case$
names swap$ add.to.namelist
} if$ 'names :=
#1 i + 'i :=
} while$
pop$
names
}
%==============================================================================
% Formata uma lista de sobrenomes com todos os autores.
%
% Parm:
% os nomes a serem formatados
%==============================================================================
FUNCTION {format.family.names.all}
{
duplicate$ num.names$ 'n :=
#1 'i :=
"" 'names :=
{i n #1 + <}
{
duplicate$ i "{ll}{~jj}" format.name$
duplicate$ "others" =
{
pop$ names " et~al." *
n 'i :=
}{
"u" change.case$
names swap$ add.to.namelist
} if$ 'names :=
#1 i + 'i :=
} while$
pop$
names
}
.bst 言語についてはよくわかりませんが、change.case$
コマンドを削除するだけで問題が解決すると思います。