Sie sind hier

Einträge in thebibliography nicht auf zwei Seiten verteilen

Hallo :-)

Ich habe eine Frage zu der \thebibliography-Umgebung. Ich bin mit meinem Latein am Ende, und hier gibt's ja Leute, die sich _wirklich_ auskennen ;-) Ich benutze scrartcl.

Ist es möglich, LaTeX klarzumachen, daß ein Eintrag in der Bibliographie nicht auf zwei Seiten verteilt werden darf? Also daß jeder Eintrag immer komplett zusammenbleibt? Ich habe ein eigenes .bst-Script geschrieben, was die .bbl-Datei erzeugt. Also kann ich von daher ziemlich weit unten eingreifen. Ich habe alles mögliche ausprobiert, z. B. \samepage und \begin{samepage}...\end{samepage}, etc., aber das wurde alles geflissentlich ignoriert ...

Ich vermute mal, man müßte hierfür noch ein bißchen tiefer in \thebibliography oder \bibitem selber rummanipulieren. Aber soweit gehen dann meine LaTeX-kenntnisse doch nicht ;-)

Also ich wäre sehr dankbar für einen Hinweis!

MfG

forum: 
Bild von Markus Kohm

\bibitem wird primär vom LaTeX-Kern bereitgestellt. Falls Du irgendwelche Literaturverzeichnis-Pakete (z. B. natbib) verwendest, wird die Anweisung eventuell auch dort umdefiniert.

Wenn Du ein bst-Script geschrieben hast, das die Einträge selbst erzeugt, und das bereits mit samepage arbeitet, solltest Du mal noch schauen, ob in den Einträgen \newblock vorkommt. Je nachdem, wie das definiert ist, könnte es eventuell wieder einen Umbruch ermöglichen. Desweiteren könntest Du statt samepage auch eine Box ausprobieren.

BTW: Ich bin sicher, dass sich noch andere für eine Lösung interessieren. Jedenfalls kann ich mir vorstellen, dass dieses Problem gar nicht so selten ist.

Ein Auszug aus der generierten .bbl-Datei sieht so aus:

\begin{thebibliography}{100}

\bibitem{anbar:j_dent_res:1974}
{\konsauthorfmt Anbar M.}, {\konsauthorfmt Farley E.}: {\konstitlefmt Potential
use of organic polyphosphonates as adhesives in the restoration of teeth}.
\konsnewblock {\konsjournalfmt J Dent Res} {\konsvolumefmt 53}, {\konspagesfmt
879--888} {\konsfmtdate\konsdatetextyear{1974}}.

...

\end{thebibliography}

Ich habe überall \kons... befehle eingefügt, damit jeder Abschnitt frei formatierbar ist. Das Script basiert auf gerplain.bst. Die dort gesetzten \newblock-Befehle habe ich durch \konsnewblock ersetzt, damit man, wenn nötig, vor dem Journal ein \newline einfügen kann. Derzeit ist aber \konsnewblock als {} definiert.

Wenn ich sowas hier erzeuge:

\bibitem{anbar:j_dent_res:1974}\konsbox{
{\konsauthorfmt Anbar M.}, {\konsauthorfmt Farley E.}: {\konstitlefmt Potential
use of organic polyphosphonates as adhesives in the restoration of teeth}.
\konsnewblock {\konsjournalfmt J Dent Res} {\konsvolumefmt 53}, {\konspagesfmt
879--888} {\konsfmtdate\konsdatetextyear{1974}}.}

und \konsbox als \parbox{\linewidth} definiere, dann werden zwar die Einträge nicht mehr auf zwei Seiten verteilt, aber die Nummer im Litertaurverzeichnis erscheint nicht auf der ersten Zeile des Eintrags, sondern vertikal zentriert ...

... durch die Lösung einer anderen Sache, nämlich:

Kann man in einer list-Umgebung die labels, die durch \item erzeugt werden, am oberen Rand ausrichten, wenn der Text des items eine parbox ist, die über mehrere Zeilen geht?

man muß nur statt \parbox{\linewidth}{...} \parbox[t]{\linewidth}{...} schreiben :-)

Hallo Libby,

mit dem Problem habe ich mich auch schon lange herumgeschlagen.

Mit erscheint deine Lösung recht aufwendig. Soweit ich sie verstehe muss man manuell um jeden Eintrag eine box machen?

Eine einfachere Variante ist vor dem Literaturverzeichnis (LV) die interlinepenalty hochzusetzen. Bei mir sieht das so aus:

\bibliographystyle{apacite}
\interlinepenalty=10000
\bibliography{Diss}

Jetzt muss ich nur noch herausfinden, wie hoch dieser Wert ursprünglich war und ihn dann wieder zurücksetzen, damit der Umbruch im auf das LV folgenden Anhang wieder funktioniert...

Bild von Markus Kohm

Bei Verwendung von babelbib wird beispielsweise \btxauthorcolor normalerweise so definiert, dass darin \par vorkommt. An der Stelle darf dann natürlich auch ein Seitenumbruch stattfinden. Ich habe deshalb:

\g@addto@macro\@openbib@code{%
  \renewcommand*{\btxauthorcolon}[1]{:\par\nobreak}%
  \renewcommand*{\btxurlfont}{\par\nobreak\url}%
}%

in einem solchen Fall verwendet. Hier kann man natürlich auch gleich \interlinepenalty setzen und ggf. \newblock umdefinieren. Eine allgemeinere Lösung zur Verhinderung von Seitenumbrüchen bei Absätzen in Literaturverzeichniseinträgen wäre vermutlich:

\g@addto@macro\@openbib@code{%
  \let\par@before@bib\par
  \def\par{\par@before@bib\nobreak}%
}

Getestet habe ich das aber nicht.

Comments for "Einträge in thebibliography nicht auf zwei Seiten verteilen" abonnieren