Unter TeX Live 2015 ragt das Abkürzungsverzeichnis über den Rand hinaus. Es entsteht eine overfull hbox.

Ein Klick auf Öffne in Online-Editor zeigt, dass es mit TeX Live 2014 und damit auch etwas älterem KOMA-Skript aussieht wie erwartet.

Was kann getan werden, damit auch mit aktuellen KOMA-Script-Versionen das Abkürzungsverzeichnis wie vorher aussieht?

% !TEX makeindex -s nomencl.ist -o document.nls -t document.nlg document.nlo
\documentclass{scrartcl}
\usepackage{nomencl}
\setlength{\nomlabelwidth}{.20\hsize}
\renewcommand{\nomlabel}[1]{#1 \dotfill}
\makenomenclature
\begin{document}
\printnomenclature

\section{salsa Snake}
Die Abkürzung etc.\nomenclature{etc.}{et cetera} steht im Abkürzungsverzeichnis.
\end{document}

gefragt 17 Aug '15, 22:19

Johannes's gravatar image

Johannes
7.3k294566
Akzeptiert-Rate: 43%

bearbeitet 23 Mär '21, 09:27

stefan's gravatar image

stefan ♦♦
18.1k143048

Die Frage ist zum Archivieren gedacht, kein Support benötigt. Antworten sind jedoch sehr willkommen! Evtl. antworte ich auch selbst. Die Frage taucht in letzter Zeit ja öfter auf, nun kann verlinkt werden :-)

(17 Aug '15, 22:21) Johannes

Es gibt auch andere Fälle, wo man nicht unbedingt LaTeX-Befehle mit TeX-Befehlen mischen sollte. Mit \textwidth aus LaTeX statt \hsize aus plain TeX vermeidet man die Probleme.

(18 Aug '15, 08:45) Herbert
1

@Herbert: \textwidth ist aber bei mehrspaltigen Texten etwas ganz anderes als \hsize. Das eher passende \columnwidth ist (wie \hsize) auch erst aber \begin{document} gültig. Das Problem besteht also nicht nur darin, dass die eventuell nicht ganz korrekte Länge verwendet wird, sondern auch, dass diese zu einem zu frühen Zeitpunkt verwendet wird.

(18 Aug '15, 09:11) saputello

@herbert: Es scheint irgendwo ein Einführung/Tutorial zu geben, welche \hsize verwendet. In den letzten Wochen kam die Frage wiederholt auf, deshalb hier als Archivfrage, um schnell verlinken zu können.

(18 Aug '15, 09:37) Johannes

@saputello: sicher ist \textwidth etwas anderes als \hsize. Aber darum ging es mir gar nicht. Ohnehin ist der unterschied zwischen \textwidth, \linewidth und \columnwidth für den Anfänger etwas verwirrend.

(18 Aug '15, 10:29) Herbert

@Johannes: \hsize verwendet man beispielsweise in einer tabularx, wenn die X-Spalten unterschiedlich breit sein sollen.

(18 Aug '15, 10:30) Herbert
Ergebnis 5 von 6 show 1 more comments

Die Länge \hsize wird offiziell erst von \begin{document} auf einen gültigen Wert gesetzt. Davor ist dessen Wert zufällig. Das war übrigens schon vor TeX Live 2015 so. Damals hat der Wert von \hsize nur zufällig oft etwas besser gepasst. Bei Verwendung von beispielsweise geometry konnte der Wert aber auch schon damals total falsch sein. Daher ist es schlicht ein Fehler \hsize bereits vor \begin{document} zum Setzen einer anderen Länge zu verwenden. Korrekt wäre hingegen beispielsweise:

% !TEX makeindex -s nomencl.ist -o document.nls -t document.nlg document.nlo
\documentclass{scrartcl}
\usepackage{nomencl}
\AtBeginDocument{\setlength{\nomlabelwidth}{.20\columnwidth}}
\renewcommand{\nomlabel}[1]{#1 \dotfill}
\makenomenclature
\begin{document}
\printnomenclature

\section{salsa Snake}
Die Abk\"urzung etc.\nomenclature{etc.}{et cetera} steht im Abk\"urzungsverzeichnis.
\end{document}

Ich habe dabei auch gleich \hsize durch \columnwidth ersetzt, weil das offiziell die Spaltenbreite ist (bei einspaltigen Texten entspricht \columnwidth gleichzeitig \textwidth), während \hsize eine von der aktuellen Umgebung abhängige, mehr oder weniger interne Arbeitslänge von TeX ist.

Mit \AtBeginDocument wird die Zuweisung an die Länge \nomlabelwidth auf einen Zeitpunkt innerhalb \begin{document} verschoben, zu dem bereits alle Längen für Satzspiegel und Ränder initialisiert sind.

Dass dieser Fehler nun tatsächlich auftritt liegt übrigens darin, dass typearea die Länge \hsize nicht mehr für interne Berechnungen verwendet und deshalb nicht mehr zufällig einen manchmal passenden Wert besitzt. Ein ähnlicher Bug mit zu früher Verwendung von \hsize befindet sich übrigen im Paket glossaries. Im zugehörigen Bug-Report gibt es auch ein Beispiel, das zeigt, dass die Verwendung von \hsize vor \begin{document} schon immer falsch war.


Hier noch ein Beispiel, in dem auch mit älteren Versionen von TeX Live deutlich zu sehen ist, dass bei der falschen Verwendung von .20\hsize in der Dokumentpräambel die Labelbreite eben nicht unbedingt ein Fünftel der Textspaltenbreite ist und das sogar mit einer Standardklasse, also ganz ohne KOMA-Script:

% !TEX makeindex -s nomencl.ist -o document.nls -t document.nlg document.nlo
\documentclass[a4paper]{article}
\usepackage{nomencl}
\usepackage{showframe}
\usepackage{geometry}
\setlength{\nomlabelwidth}{.20\hsize}
\renewcommand{\nomlabel}[1]{#1 \dotfill}
\makenomenclature
\begin{document}
\printnomenclature

\noindent\rule{.20\hsize}{1pt} Der Strich links sind \verb|.20\hsize|.

\section{salsa Snake}
Die Abk\"urzung etc.\nomenclature{etc.}{et cetera} steht im Abk\"urzungsverzeichnis.
\end{document}

Es hatte also wirklich nur den Anschein, dass man das so machen darf.

Permanenter link

beantwortet 18 Aug '15, 07:34

saputello's gravatar image

saputello
11.1k154365
Akzeptiert-Rate: 51%

bearbeitet 23 Mär '21, 09:28

stefan's gravatar image

stefan ♦♦
18.1k143048

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×130
×117
×3

gestellte Frage: 17 Aug '15, 22:19

Frage wurde gesehen: 11,534 Mal

zuletzt geändert: 18 Aug '15, 10:32