
내 질문은 간단합니다.제가 얼마 전에 물어본 질문이에요, 하지만 이제는 biblatex가 아닌 bibtex를 사용해야 합니다. 주로 내 파일을 arXiv에 쉽게 넣을 수 있고 내 tex 파일을 다른 사람들과 공유하는 데 어려움이 덜하기 때문입니다. 보다 정확하게는 bibtex alpha 스타일의 인용에서 저자의 전체 목록이 표시되기를 원합니다. 특정 출판물의 저자 목록에 저자가 4명 이하인 경우에는 문제가 되지 않습니다. 그러나 저자 목록에 3명 이상의 저자가 포함된 경우 인용은 처음 3명의 저자의 성과 "+" 기호로 잘립니다.
다음 예를 고려해보세요:
\documentclass[11pt]{article}
\usepackage{cite}
\begin{document}
A citation \cite{cita}.
\bibliography{trial2}{}
\bibliographystyle{alpha}
\end{document}
여기서 trial2.bib는 .bib 파일입니다.
@article {cita,
AUTHOR = {Add, Abel and Bc, Bobby and Ca, Carla and De, Daniela and Edd, Emilio},
TITLE = {Article},
JOURNAL = {Some},
FJOURNAL = {Any},
VOLUME = {1},
YEAR = {2018},
NUMBER = {1},
PAGES = {1--10},
}
출력에는 "[ABC+18]"이라는 인용문이 있습니다. 인용문을 "[ABCDE18]"로 읽고 싶습니다. 어떤 도움이라도 대단히 감사하겠습니다.
중요하다면 MikTeX를 사용하여 Windows 10에서 TeXStudio로 작업하고 있습니다.
답변1
이러한 레이블을 생성하는 절차는 파일에 코딩되어 있습니다 .bst
. alpha.bst
생성된 레이블을 수동으로 재정의할 수 있는 방법이 없으므로 다른 사항을 변경하지 않고 이를 변경하는 유일한 방법은 파일을 수정하는 것입니다 .bst
. 그러면 변경된 .bst
파일도 배포해야 하므로 공동 작업이 더욱 번거로워집니다 .
어쨌든 alpha.bst
다음과 같이 변경할 수 있습니다.
alpha.bst
컴퓨터에서 찾거나 (kpsewhich alpha.bst
명령줄에서 파일이 있는 위치를 찾을 수 있음), 또는 CTAN에서 파일을 가져옵니다.http://mirrors.ctan.org/biblio/bibtex/base/alpha.bstalpha.bst
LaTeX가 찾을 수 있는 위치에 복사합니다 (https://texfaq.org/FAQ-inst-wlcf, 문서 디렉토리는 괜찮을 것입니다) 그리고이름 바꾸기말하자면,alpha-maxalphanames.bst
. 참고로 라이센스는필요하다나중에 재배포할 경우 파일 이름을 바꿉니다.이름이 바뀐 파일을 열고
alpha-maxalphanames.bst
코드 블록을 교체하세요.FUNCTION {format.lab.names} { 's := s num.names$ 'numnames := numnames #1 > { numnames #4 > { #3 'namesleft := } { numnames 'namesleft := } if$ #1 'nameptr := "" { namesleft #0 > } { nameptr numnames = { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = { "{\etalchar{+}}" * #1 'et.al.char.used := } { s nameptr "{v{}}{l{}}" format.name$ * } if$ } { s nameptr "{v{}}{l{}}" format.name$ * } if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ numnames #4 > { "{\etalchar{+}}" * #1 'et.al.char.used := } 'skip$ if$ } { s #1 "{v{}}{l{}}" format.name$ duplicate$ text.length$ #2 < { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } 'skip$ if$ } if$ }
~와 함께
FUNCTION {format.lab.names} { 's := s num.names$ 'numnames := numnames #1 > { numnames 'namesleft := #1 'nameptr := "" { namesleft #0 > } { nameptr numnames = { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = { "{\etalchar{+}}" * #1 'et.al.char.used := } { s nameptr "{v{}}{l{}}" format.name$ * } if$ } { s nameptr "{v{}}{l{}}" format.name$ * } if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } { s #1 "{v{}}{l{}}" format.name$ duplicate$ text.length$ #2 < { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } 'skip$ if$ } if$ }
구체적으로, 첫 번째
numnames #4 > {<true>} {<false>} if$
블록을 브랜치의 내용으로만 교체<false>
하고 두 번째numnames #4 > {<true>} {<false>} if$
블록을 완전히 제거합니다.파일 상단에 귀하의 이름과 현재 날짜로 변경 사항에 대한 간단한 메모를 추가하세요.
파일을 저장합니다.
문서에서
\bibliographystyle{alpha-maxalphanames}
대신 사용하세요 .\bibliographystyle{alpha}
오븐 준비는 alpha-maxalphanames
다음에서 구할 수 있습니다.https://gist.github.com/moewew/d802ea87f432f97fc428dbc9d54e64c1, diff
~ alpha.bst
는
--- alpha.bst 2019-12-21 08:15:40.781232500 +0100
+++ alpha-maxalphanames.bst 2019-12-21 08:19:48.505159500 +0100
@@ -1,3 +1,14 @@
+%% alpha-maxalphanames.bst
+%% 2019-12-21 MW
+%% https://tex.stackexchange.com/q/521246/35864
+%% modification of alpha.bst
+%%
+%% small change to format.lab.names:
+%% always set numnames 'namesleft :=
+%% remove both numnames #4 > tests
+%%
+%% original copyright header follows
+%%
% BibTeX standard bibliography style `alpha'
% Version 0.99b (8-Dec-10 release) for BibTeX versions 0.99a or later.
% Copyright (C) 1984, 1985, 1988, 2010 Howard Trickey and Oren Patashnik.
@@ -935,10 +946,7 @@
{ 's :=
s num.names$ 'numnames :=
numnames #1 >
- { numnames #4 >
- { #3 'namesleft := }
- { numnames 'namesleft := }
- if$
+ { numnames 'namesleft :=
#1 'nameptr :=
""
{ namesleft #0 > }
@@ -956,12 +964,6 @@
namesleft #1 - 'namesleft :=
}
while$
- numnames #4 >
- { "{\etalchar{+}}" *
- #1 'et.al.char.used :=
- }
- 'skip$
- if$
}
{ s #1 "{v{}}{l{}}" format.name$
duplicate$ text.length$ #2 <
이를 통해 다음 MWE
\documentclass[11pt]{article}
\usepackage{cite}
\begin{filecontents}{\jobname.bib}
@article {cita,
AUTHOR = {Add, Abel and Bc, Bobby and Ca, Carla and De, Daniela and Edd, Emilio},
TITLE = {Article},
JOURNAL = {Some},
FJOURNAL = {Any},
VOLUME = {1},
YEAR = {2018},
NUMBER = {1},
PAGES = {1--10},
}
\end{filecontents}
\begin{document}
A citation \cite{cita}.
\bibliography{\jobname}
\bibliographystyle{alpha-maxalphanames}
\end{document}
생산하다