
내 텍스트를 직접 인용하려고 하는데 저자 이름의 첫 글자만 대문자로 써야 합니다.
어떤 이유로 natbib의\Citet(대문자 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$
명령을 제거하면 문제가 해결될 수 있다고 생각합니다.