![Grundlegendes zur Vorlage](https://rvso.com/image/391708/Grundlegendes%20zur%20Vorlage.png)
für meine Abschlussarbeit bekam ich eine TeX-Vorlage und versuchte, den Code zu verstehen, bevor ich irgendetwas Überflüssiges oder Nutzloses tat. Das meiste habe ich herausgefunden, aber dann gibt es da diesen Codeabschnitt, den ich nicht entziffern kann:
\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
Es steht direkt vor der Bibliographie.
Kann mir jemand helfen, diese geheimnisvolle Sprache zu verstehen?
Antwort1
Mit leicht anderer Einrückung lautet der Code
\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
Es ändert den Befehl \thebibliography
, der die Grundlage für den Startcode von bildet
\begin{thebibliography}{<longest label>}
\bibitem{<key>} <entry text>
\end{thebibliography}
Im Detail
\chapter*{References\@mkboth{REFERENCES}{REFERENCES}}%
Zunächst setzt der Code ein unnummeriertes KapitelVerweiseund fügt auf beiden Seiten Kolumnenüberschriften mit dem Text hinzuVERWEISE.
\list
{[\arabic{enumi}]}
Die Bibliographie wird als Liste mit dem Zähler gesetzt enumi
(etwas ungewöhnlich, die Standardimplementierungen verwenden den Zähler enumiv
, aber normalerweise spielt das keine Rolle). Die Bezeichnungsnummer/Bezeichnung wird in eckige Klammern gesetzt.
{\settowidth\labelwidth{[#1]}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\usecounter{enumi}}%
Dies ist Standardmaterial, das eine Liste mit sinnvollen Rändern für dieses Szenario erstellt.
\def\newblock{\hskip .11em plus .33em minus .07em}%
Definiert den zusätzlichen dehnbaren Raum, der \newblock
eingefügt wird. \newblock
ist ein Befehl, der von vielen Bibliografiestilen ausgegeben wird, um größere Informationsblöcke in der Bibliografie zu trennen. Es ermöglicht eine visuelle Trennung und kann durch seine zusätzliche Dehnbarkeit dazu beitragen, den Zeilenumbruch zu verbessern.
\sloppy
Legt Parameter für den Zeilenumbruch fest, sieheWas bedeutet \fussy, \sloppy, \emergencystretch, \tolerance, \hbadness?. Diese Einstellung ist normalerweise gut geeignet, um Überfüllungen zu vermeiden, kann aber bei längeren Textabschnitten zu unterdurchschnittlichen Ergebnissen führen. Für die Bibliographie ist das wahrscheinlich akzeptabel.
\clubpenalty4000
\widowpenalty4000
Legt Parameter zur Steuerung von Hurenkindern und Hurenkindern fest. SieheWie verhindere ich Hurensöhne/Waisenkinder?Undhttps://texfaq.org/FAQ-widows.
\sfcode`\.=1000\relax
Deaktivieren Sie den größeren Abstand nach satzendendem .
„s“ in der Bibliographie. Siehe auchDoppelter Abstand zwischen den Sätzen.
Im Vergleich zur Standarddefinition in report.cls
(es ist dasselbe in book.cls
und unterscheidet sich nur geringfügig in 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}
Wir stellen folgende Unterschiede fest:
- Ihr Code definiert nur den Anfangscode neu (der Endcode bleibt vermutlich unverändert).
- Ihr Code verwendet
enumi
anstelle vonenumiv
. In der Praxis sollte dieser Unterschied kaum eine Rolle spielen. - Der Standardcode verfügt an einigen Stellen über anpassbare Makros, wo Ihr Code fest codierte Werte hat (
[...]
vs\@biblabel{...}
;References
vs\bibname
; ).- Insbesondere würden die Standardklassen drucken
\bibname
, was standardmäßigLiteraturverzeichnis, während Ihr CodeVerweisefest codiert. Dies ist so ziemlich der einzige sichtbare Unterschied zwischen Ihrem Code und der Standarddefinition für „normale Verwendung“ (unter der Annahme der Standarddefinition von\def\@biblabel#1{[#1]}
, die in Ihrer Definition fest codiert ist).
- Insbesondere würden die Standardklassen drucken
- Da Ihr Code
\newblock
im Anfangscode neu definiert wird, sind alle an diesem Befehl im Dokument vorgenommenen Änderungen ungültig.
FWIW, ich habe gefundenhttp://kb.mit.edu/confluence/x/YJ47das empfiehlt so ziemlich den Code, den Sie gezeigt haben. Alan HoenigsTeX Unbound: LaTeX- und TeX-Strategien für Schriftarten, Grafiken und mehrzeigt eine ähnliche Definition aufS. 546. Die Definition ist im Stil recht ähnlich der inapalike.sty
. Ich habe auch mehrere LaTeX 2.09 .sty
s mit ähnlichen Redewendungen gefunden, die enumi
(http://mirrors.ctan.org/macros/latex209/contrib/misc/chapref.sty,http://mirrors.ctan.org/macros/latex209/contrib/misc/cites.sty). Vielleicht ist der Code von älterem LaTeX 2.09-Code inspiriert?