PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \labelsep in thebibliography?



bienchen
13-06-2012, 14:27
Hallo LaTeX-Fans!

kennst sich irgendwer mit \labelsep aus?
Ich mache mir gerade eine 2-spaltige Bibliography und wollte da einen kleineren \labelsep haben (BiBLaTeX ist keine Option mehr, habe zu spaet davon erfahren). Bloss weiss ich nicht genau wie das Ganze angelegt ist.

Wie ich das Mass veraendere ist klar, mein Plan waere: aktuellen Wert zu Beginn der Umgebung sichern, neuen Wert setzen, zum Ende wieder herstellen.

Die Fragen waeren nun:
- wo wird denn \labelsep ueberhaupt gesetzt? Definition habe ich gefunden (base/latex.ltx), aber nix wo da mal eine Zahl hinzukommt
- muss ich wirklich speichern und wieder herstellen oder faellt der Wert nach der Umgebung auf einen Default zurueck?

MfG

bienchen

bobmalaria
13-06-2012, 14:35
hi,

bei der menge deiner beitraege solltest du doch wissen, dass ein beispiel unabdingbar ist um dir zu helfen. keiner kann aktuell wissen was du genau machst und was genau veraendert werden muss damit es fuer dich am ende funktioniert. mache dir also bitte die muehe ein minimalbeispiel zu erstellen.

gruss

bienchen
13-06-2012, 15:46
Ich dachte, gerade durch meine vielen Eintraege haette ich gelernt mich so auszudruecken, dass ich keine Besipiele mehr brauche ;-)



\documentclass{book}
\usepackage{multicol}

\makeatletter
\newdimen\orgstretch
\renewenvironment{thebibliography}[1]{%
\multicoltolerance=9999
\begin{multicols*}{2}[\chapter*{\bibname}\addcontentsline{toc}{chapter}{ \bibname}]%
\begin{small}%
% fetch original spacing/ stretching
\orgstretch=\fontdimen3\font%
\fontdimen3\font=0.487\orgstretch%
\@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bi bname}%
\list{\@biblabel{\@arabic\c@enumiv}}%
{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin0.75\labelsep
\@openbib@code
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
\emergencystretch 1.461em%
\hfuzz .5\p@
\vfuzz\hfuzz
\clubpenalty4000
\@clubpenalty \clubpenalty
\widowpenalty4000%
\sfcode`\.\@m}
{\fontdimen3\font=\orgstretch\end{small}\def\@noit emerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist\end{multicols*}}
\makeatother

\begin{document}
\cite{test}
\bibliography{minibib}
\bibliographystyle{plain}
\end{document}


Und hier ein extraklaines Literaturverzeichnis



@article{test,
title = {Foo},
journal = "Journal of Bar",
volume = "1",
number = "1",
pages = "1 - 1",
author = "M.E. Calling Home"
}

bienchen
13-06-2012, 23:38
Und darin hätte ich nun gerne \labelsep angepasst, so dass nach der Bibliography wieder der alte Wert eingestellt ist. Mit vorher Abspeichern & Restore oder geht das automatisch?

rais
18-06-2012, 11:00
Moin moin,


- wo wird denn \labelsep ueberhaupt gesetzt?

spätestens in der Klassendatei, hier book.cls


- muss ich wirklich speichern und wieder herstellen
nein.


oder faellt der Wert nach der Umgebung auf einen Default zurueck?

ja, Änderungen an Längenregistern wirken sich nur auf die jeweilige Gruppe aus:


\documentclass{book}
\usepackage{multicol}
\begin{filecontents*}{minibib.bib}
@article{test,
title = {Foo},
journal = "Journal of Bar",
volume = "1",
number = "1",
pages = "1 - 1",
author = "M.E. Calling Home"
}
\end{filecontents*}
\makeatletter
\newdimen\orgstretch
\renewenvironment{thebibliography}[1]{%
\multicoltolerance=9999
\begin{multicols*}{2}[\chapter*{\bibname}\addcontentsline{toc}{chapter}{ \bibname}]%
\small%
% fetch original spacing/ stretching
\orgstretch=\fontdimen3\font%
\fontdimen3\font=0.487\orgstretch%
\@mkboth{\MakeUppercase\bibname}{\MakeUppercase\bi bname}%
\setlength\labelsep{4em}%
\typeout{Info: \string\labelsep: \the\labelsep}%
\list{\@biblabel{\@arabic\c@enumiv}}%
{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin0.75\labelsep
\@openbib@code
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
\emergencystretch 1.461em%
\hfuzz .5\p@
\vfuzz\hfuzz
\clubpenalty4000
\@clubpenalty \clubpenalty
\widowpenalty4000%
\sfcode`\.\@m}
{\fontdimen3\font=\orgstretch\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist\end{multicols*}}
\makeatother

\begin{document}
\cite{test}
\typeout{Info: \string\labelsep: \the\labelsep}%
\bibliography{minibib}
\bibliographystyle{plain}
\typeout{Info: \string\labelsep: \the\labelsep}%
\end{document}

BTW: \small ist ein Schalter, keine Umgebung.

MfG

bienchen
19-06-2012, 14:40
Vielen Dank fuer die Antwort, passt.
Allerdings kann man small usw. auch als Umgebung nutzen und ich meine mich zu erinneren, dass \small TeX Syntax ist, waehrend ein Environment LaTex ist oder was ist da der Unterschied?

Immerhin, die labelsep- Geschichte laeuft gut!

rstuby
19-06-2012, 14:51
Die sind einfach so definiert, dass es nicht schlimm ist, wenn man sie aus Versehen als Umgebung benutzt (jedenfalls habe ich so mal Ulrikes ausfürhliche Erklärung verstanden, die dürfte hier im Forum in einem Thema mit "Umgebung" im Titel zu finden sein).

bienchen
19-06-2012, 22:09
Also dann doch eher {\small ...}?

rais
21-06-2012, 23:33
Moin moin,

und ich meine mich zu erinneren, dass \small TeX Syntax ist, waehrend ein Environment LaTex ist oder was ist da der Unterschied?

nö, \small wird z. B. in bk10.clo (die Datei wird von der book-Klasse bei 10pt Brotschrift geladen) per \newcommand -- also als Makro -- definiert.


Also dann doch eher {\small ...}?

Im Text ja.
Bei der Umdefinition der thebibliography-Umgebung übernimmt die Umgebung bereits die Klammerung, deshalb genügt hier \small.

MfG

bienchen
27-06-2012, 21:10
OK, dann hab ich jetzt auch auf \small geschaltet ;-)

Vielen Dank fuer die Hilfe.

bienchen