![템플릿 이해](https://rvso.com/image/391708/%ED%85%9C%ED%94%8C%EB%A6%BF%20%EC%9D%B4%ED%95%B4.png)
논문 작성을 위해 TeX 템플릿을 받았고 중복되거나 쓸모없는 작업을 수행하기 전에 코드를 이해하려고 노력했습니다. 대부분의 내용을 알아냈지만 해독할 수 없는 코드가 있습니다.
\makeatletter
\def\thebibliography#1{\chapter*{References\@mkboth
{REFERENCES}{REFERENCES}}\list
{[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
\advance\leftmargin\labelsep
\usecounter{enumi}}
\def\newblock{\hskip .11em plus .33em minus .07em}
\sloppy\clubpenalty4000\widowpenalty4000
\sfcode`\.=1000\relax}
\makeatother
참고문헌 바로 앞에 있습니다.
이 신비한 언어를 이해하도록 도와줄 수 있는 사람이 있나요?
답변1
약간 다른 들여쓰기로 코드를 읽습니다.
\makeatletter
\def\thebibliography#1{%
\chapter*{References\@mkboth{REFERENCES}{REFERENCES}}%
\list
{[\arabic{enumi}]}
{\settowidth\labelwidth{[#1]}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\usecounter{enumi}}%
\def\newblock{\hskip .11em plus .33em minus .07em}%
\sloppy
\clubpenalty4000
\widowpenalty4000
\sfcode`\.=1000\relax}
\makeatother
\thebibliography
시작 코드의 기초를 형성하는 명령을 수정합니다 .
\begin{thebibliography}{<longest label>}
\bibitem{<key>} <entry text>
\end{thebibliography}
상세히
\chapter*{References\@mkboth{REFERENCES}{REFERENCES}}%
먼저 코드는 번호가 없는 장을 조판합니다.참고자료양쪽 독서에 런닝 헤드를 추가합니다.참고자료.
\list
{[\arabic{enumi}]}
참고문헌은 counter를 사용하여 목록으로 조판됩니다 enumi
(약간 특이하지만 표준 구현에서는 counter를 사용 enumiv
하지만 일반적으로 이는 중요하지 않습니다). 라벨 번호/라벨은 대괄호 안에 표시됩니다.
{\settowidth\labelwidth{[#1]}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\usecounter{enumi}}%
이는 이 시나리오에 적합한 마진이 있는 목록을 설정하는 표준 항목입니다.
\def\newblock{\hskip .11em plus .33em minus .07em}%
삽입되는 추가 신축성 공간을 정의합니다 \newblock
. \newblock
참고문헌에서 더 큰 정보 블록을 분리하기 위해 많은 참고문헌 스타일에서 발행되는 명령입니다. 시각적인 분리가 가능하며 추가적인 신축성으로 라인 끊김을 개선하는 데 도움이 될 수 있습니다.
\sloppy
줄바꿈에 대한 매개변수를 설정합니다.\까다로움, \엉성함, \긴급 신장, \관용, \hbadness의 의미는 무엇입니까?. 이 설정은 일반적으로 과도한 내용을 방지하는 데 유용하지만 긴 텍스트 단락의 경우 수준 이하의 결과를 제공할 수 있습니다. 아마도 허용될 수 있는 참고문헌의 경우.
\clubpenalty4000
\widowpenalty4000
과부와 고아를 제어하기 위한 매개변수를 설정합니다. 보다과부/고아 라인을 방지하려면 어떻게 해야 합니까?그리고https://texfaq.org/FAQ-widows.
\sfcode`\.=1000\relax
.
참고문헌에서 문장 끝 s 뒤의 더 큰 공간을 비활성화합니다 . 또한보십시오문장 사이의 이중 공백.
의 표준 정의와 비교 report.cls
(에서는 동일 book.cls
하지만 약간만 다름 article.cls
)
\newenvironment{thebibliography}[1]
{\chapter*{\bibname}%
\@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bibname}%
\list{\@biblabel{\@arabic\c@enumiv}}%
{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\@openbib@code
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
\sloppy
\clubpenalty4000
\@clubpenalty \clubpenalty
\widowpenalty4000%
\sfcode`\.\@m}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}
\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
우리는 다음과 같은 차이점에 주목합니다:
- 귀하의 코드는 시작 코드만 재정의합니다(아마도 종료 코드는 변경되지 않은 상태로 유지됩니다).
- 귀하의 코드
enumi
에서는enumiv
. 실제로 그 차이는 거의 중요하지 않습니다. - 표준 코드에는 코드에 하드 코딩된 값(
[...]
vs\@biblabel{...}
;References
vs\bibname
; )이 있는 일부 위치에 사용자 정의 가능한 매크로가 있습니다.- 특히 표준 클래스는 를 인쇄하며
\bibname
기본값은 다음과 같습니다.서지, 귀하의 코드에는참고자료하드 코딩되었습니다. 이것은 귀하의 코드와 '일반적인 사용'에 대한 표준 정의 사이의 유일한 눈에 띄는 차이점에 관한 것입니다(\def\@biblabel#1{[#1]}
정의에 하드 코딩된 의 표준 정의를 가정 ).
- 특히 표준 클래스는 를 인쇄하며
- 코드가
\newblock
시작 코드에서 재정의되므로 문서에서 해당 명령에 대한 모든 변경 사항은 무효화됩니다.
FWIW 내가 찾았어http://kb.mit.edu/confluence/x/YJ47당신이 보여준 코드를 거의 추천합니다. 앨런 호에닉(Alan Hoenig)TeX Unbound: 글꼴, 그래픽 등에 대한 LaTeX 및 TeX 전략에 대해서도 비슷한 정의를 보여줍니다.피. 546. 정의는 의 정의와 스타일이 매우 유사합니다.apalike.sty
. 또한 .sty
(enumi
http://mirrors.ctan.org/macros/latex209/contrib/misc/chapref.sty,http://mirrors.ctan.org/macros/latex209/contrib/misc/cites.sty). 어쩌면 코드가 이전 LaTeX 2.09 코드에서 영감을 얻었을까요?