Sie sind hier

Kapitelautor bei Sammelband

Hallo zusammen,

als LaTeX-Neuling versuche ich mich gerade an einer Formatvorlage für ein Büchlein mit mehreren Kapiteln von je verschiedenen Autoren. Hat vielleicht jemand Erfahrung damit, wie man das Problem am Besten löst? Ich versuche das gerade mit der scrreprt-Klasse. Ist es möglich, einen chapterauthor zu definieren? Oder ist eher geraten, die einzelnen Artikel für sich zu TeXen um sie dann in einem Master zusammmenzusetzen?

Leider kann ich zum jetzigen Zeitpunkt noch kein Minimal-Bsp. geben. Ich befinde mich gewissermassen noch in den Kinderschuhen, hoffe also, dass man mich vor dem Holzweg bewahrt. Danke schonmal im voraus.

Bild von Markus Kohm

Siehe dazu \setchapterpreamble in der KOMA-Script-Anleitung. Auch dctt wurden auch früher schon verschiedene Lösungen für dieses Problem diskutiert, etwa wenn der Autor zusätzlich im Inhaltsverzeichnis auftauchen soll. So wäre es beispielsweise möglich eine neue Anweisung zu definieren, die als Argument den Autor und den Titel erhält und dann \setchapterpreamble und \chapter aufruft, wobei im optionalen Argument von \chapter dem Titel noch der Autor vorangestellt wird.

Lieber Markus,

vielen Dank für die schnelle Antwort. Hab auf dctt letztlich auf einen Deiner Beiträge zurückgreifen können. Ein Problem bleibt mir allerdings. Ich würde den Kapitelautor gerne in die Kopfzeile setzen und zwar mit \rehead[]{Autor}, d.h. auf der rechten Seite der geraden Seite.

Falls es dafür eine einfache Antwort gibt, wäre ich sehr dankbar. Falls es komplexer wird, würde ich mich üebr einen weiteren Tipp sehr freuen, damit ich mit Elan weiterbasteln kann.

Hier jetzt mein Minimal-Bsp.:

\documentclass[twoside]{scrreprt}
\usepackage[german]{babel}
\usepackage[T1]{fontenc}

\usepackage{scrpage2}

\clearscrheadfoot

\lehead{\pagemark}
\rehead[]{}
\rohead{\pagemark}
\cfoot[\pagemark]{}

\pagestyle{scrheadings}

\renewcommand*{\chaptermarkformat}{}
\renewcommand*{\chapterheadstartvskip}{\vspace*{0.5\baselineskip}}
\renewcommand*{\chapterheadendvskip}{\vspace*{1\baselineskip}}

\makeatletter
\newcommand*{\orgichapter}{}
\let\orgichapter\chapter
\renewcommand*{\chapter}[1]{%
\gdef\@author{#1}%
\orgichapter
}

\renewcommand*{\chapterformat}{\thechapter\autodot\hskip 1pc}

\newlength{\authorindent}
\renewcommand*{\chapterheadendvskip}{%
\ifx\@author\@empty\else
\vskip\baselineskip\nobreak
\settowidth{\authorindent}{{%
\usekomafont{sectioning}\usekomafont{chapter}\chapterformat
}}%
\begin{flushright}\sffamily\hspace*{\authorindent}\@author\par\nobreak
\global\let\@author\@empty\end{flushright}
\fi
\noindent\par\nobreak\vskip 2\baselineskip%
}
\makeatother

\begin{document}

\chapter{Autor}[Autor: Shorttitle]{Title}

Blablablab Blablablab Blablablab blub blabla blububulbu Blablablab Blablablab Blablablab blub blabla blububulbu Blablablab Blablablab Blablablab blub blabla blububulbu Blablablab Blablablab Blablablab blub blabla blububulbu blabla blub blabla blub blabla blub blabla blub. Blablablab

Blablablab Blablablab Blablablab blub blabla blububulbu Blablablab Blablablab Blablablab blub blabla blububulbu Blablablab Blablablab Blablablab blub blabla blububulbu Blablablab Blablablab

Blablablab Blablablab Blablablab blub blabla blububulbu Blablablab Blablablab Blablablab blub blabla blububulbu Blablablab Blablablab Blablablab blub blabla blububulbu Blablablab Blablablab Blablablab blub blabla blububulbu blabla blub blabla blub blabla blub blabla blub

\end{document}

Bild von Markus Kohm

Meinst du so (in Verwendung deines Minimalbeispiels):

\documentclass[twoside]{scrreprt}
\usepackage[german]{babel}
\usepackage[T1]{fontenc}
\usepackage{blindtext}
\usepackage{scrpage2}
\clearscrheadfoot
\lehead{\pagemark}
\rehead[]{\rightmark}
\rohead{\pagemark}
\cfoot[\pagemark]{}
\pagestyle{scrheadings}
\renewcommand*{\chaptermarkformat}{}
\renewcommand*{\chapterheadstartvskip}{\vspace*{0.5\baselineskip}}
\renewcommand*{\chapterheadendvskip}{\vspace*{1\baselineskip}}
\makeatletter
\newcommand*{\orgichapter}{}
\let\orgichapter\chapter
\renewcommand*{\chapter}[1]{%
  \gdef\chapterauthor{#1}%
  \orgichapter
}
\renewcommand*{\chapterformat}{\thechapter\autodot\hskip 1pc}
\newlength{\authorindent}
\renewcommand*{\chapterheadendvskip}{%
  \ifx\chapterauthor\@empty\else
  \markright{\chapterauthor}%
  \vskip\baselineskip\nobreak
  \settowidth{\authorindent}{{%
      \usekomafont{sectioning}\usekomafont{chapter}\chapterformat
    }}%
  \begin{flushright}\sffamily\hspace*{\authorindent}\chapterauthor\par\nobreak
    \global\let\chapterauthor\@empty\end{flushright}
  \fi
  \noindent\par\nobreak\vskip 2\baselineskip%
}
\makeatother
\begin{document}
\chapter{Autor}[Autor: Shorttitle]{Title}
\Blindtext\Blindtext
\end{document}

Ja, genau so hab ich mir das vorgestellt. Funktioniert super. Vielen vielen Dank.

Bild von Markus Kohm

Den größten Teil der Lösung hast du dir ja selbst zusammengesucht und erarbeitet und mir die Hilfe dann so leicht wie möglich gemacht. Ein Hinweis am Rande noch: Da ich \markright verwende, um den Autor in den Kopf zu bekommen funktioniert das in der Voreinstellung von scrpage2 mit scrbook nur so lange, wie kein \section verwendet wird (weil \sectionmark selbst \markright verwenden). Ansonsten muss man entweder die automatischen Kolumnentitel für \section durch geeignete \automark-Anweisung abschalten oder direkt auf manualmark umschalten. Die Kapitelüberschrift kann man dann ja trotzdem noch durch explizite \markboth- oder \markleft-Anweisung setzen. Dazu muss man dann allerdings alle Argumente von \chapter selbst lesen, statt sie erst von \orig@chapter auswerten zu lassen.

Ich verstehe dieses Minimalbeispiel nicht. Ich brauche genau das, was Marius Hug anfangs geschrieben hat, vielleicht werde ich nachträglich noch am Layout des Titels und des Authors basteln wollen.

Ich habe dieses Minimalbeispiel ausprobiert, und es kompiliert gut (mit pdflatex). Als ich angefangen habe es auf mein konkretes Dokument anzupassen, bin ich gleich auf eine Fehlermeldung gestoßen. Ich habe nämlich die Zeile \usepackage[german]{babel} wegkommentiert, weil ich kein babel verwenden will. Ebenso wegkommentiert habe ich \usepackage{blindtext} und eigenen \Blindtext command definiert.

Beim Kompilieren bekomme ich danach diese Felhermeldung:
...
Package typearea, 2009/04/03 v3.03a KOMA-Script package (type area)
Copyright (C) Frank Neukam, 1992-1994
Copyright (C) Markus Kohm, 1994-

)) (C:\MiKTeX\tex\latex\koma-script\scrpage2.sty) (sammelband.aux

! Package babel Error: You haven't loaded the option german yet.

See the babel package documentation for explanation.
Type H for immediate help.
...

l.3 \select@language{german}

?

Ich verstehe nicht, wo genau da der Bedarf nach babel entsteht. In scrpage2.sty kommt "babel" garnicht vor. (Für blindtext-package war es relevant, aber das hab ich mit dem eigenen \Blindtext-command umgangen).

Wenn ich babel schon unbedingt drin lassen müsste, dürfte es keinesfalls "german" sein. Ich müsste es als \usepackage[english]{babel} verwenden. Aber auch mit englischem babel bekomme ich die selbe Fehlermeldung. Etwas sucht explizit nach german babel. Welches package will es so?

Bild von Markus Kohm

Wenn man Pakete entfernt bleiben ggf. Abhängigkeiten in der aux-Datei und in anderen Hilfsdateien wie der lof-, lot- oder toc-Datei enthalten. So ist das auch bei babel. In der Regel verschwindet dieses Abhängigkeit und damit auch die zugehörigen Fehlermeldungen bei babel nach einem weiteren LaTeX-Lauf von alleine.

Grundsätzlich empfehle ich, beim Entfernen von Paketen (eigentlich auch beim Hinzufügen von Paketen) alle Hilfsdateien zu löschen. Manchmal ist das sogar erforderlich, wenn man grundsätzliche Einstellungen von Paketen/Klassen ändert.

Ich empfehle außerdem, auch bei Dokumenten in englischer Sprache babel zu verwenden. Die Sprache ist dann wenigstens eindeutig definiert. Außerdem bietet das Paket ggf. nützliche Zusätze.

BTW: Dein KOMA-Script ist veraltet.

Bild von Markus Kohm

Spätestens ab KOMA-Script 3.26 ist die in den Beispielen verwendete Umdefinierung von \chapterheadstartvskip veraltet und beispielsweise durch

\RedeclareSectionCommand[beforeskip=-0.5\baselineskip,afterskip=1\baselineskip]{chapter}

oder

\RedeclareSectionCommand[afterindent=false,beforeskip=0.5\baselineskip,afterskip=1\baselineskip]{chapter}

zu ersetzen.

Comments for "Kapitelautor bei Sammelband" abonnieren