scrbook und ein paar Fragen

Klassen und Pakete zur einfachen Umsetzung individueller Vorstellungen


Ted 77
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Do 28. Jan 2010, 14:21

scrbook und ein paar Fragen

Beitrag von Ted 77 »

Mit riesiger Anspruchshaltung aber kleinstem Wissen steht Ted vor einem großen Problem, das durch Netz- und Buchlektüre nicht gelöst werden konnte:
Gibt es eine Möglichkeit mit dem Paket "multicol" bereits in der Präambel des Dokuments chapter und section einspaltig zu definieren, so dass aus dem Fließtext heraus durch deren Eintrag automatisch umgeschaltet wird?

quasi:
\begin{multicols}{2}
\chapter{Ich bin die Einspaltigkeit in Person}
Dieser Text ist bitte zweispaltig und sieht dann ganz schick aus.

\section{und wenn schon einspaltig, dann richtig}
Aus eins mach zwei - Spalten!
\end{multicols}
Und gibt es eine Auflistung aller verfügbarer Pakete (ohne auch nur annähernd zu wissen, wie viele das sein könnten)? Soweit gesehen gibt es hier "lediglich" jeweils Listen der wichtigsten Pakete eines Themengebietes wie Seitenlayouing o.ä..

Mit tiefer und dankbarer Verneigung sowie für Anregungen immer offen, Ted

Hier der von mir bisher zusammengesuchte /-geratene Tex-Kram:
\documentclass[pdftex]{scrbook} 
\usepackage[multicol]
\usepackage[ngerman]{babel } 
\usepackage[ansinew]{inputenc} 
\usepackage[round]{natbib} 
\usepackage{textc omp} 
\usepackage{minitoc} 

\usepackage{geometry} 
\geometry{twoside,paperwidt h=170mm,paperheight=220mm,outer=20mm,inner=15mm,top=15mm,bottom=20mm,nohead,foot =10mm} 

\title{Titel} 
%\thanks{Deine~Mudda} 
\author{Autor} 
\date{01.~Januar~2010} 

\usepackage[automark]{scrpage2}%,footsepline]{scrpage2} 
\clearscr headings 
\automark[chapter]{part} 
\renewcommand*{\partmarkformat}{} 
\renewcom mand*{\chaptermarkformat}{} 
\renewcommand*{\sectionmarkformat}{} 
\setkomafont{pageheadfoot}{\sffamily\footnotesize} 
\setkomafont{pagenumber}{\sffamily\footnotesi ze} 
\rofoot{\\\headmark~~~~$|$~~~~\pagemark} 
\lefoot{\\\pagemark~~~~$|$~~~~\text normal{\sffamily{\footnotesize{Titel~-~Subtitel}}}} 
\p agestyle{scrheadings} 

\begin{document} 
\maketitle 
%\dedication{my mom} 

\frontmatter 
\dominitoc %mit Hauptverzeichnis 
\renewcommand\contentsname{Inhalt} 
\tableofcontents 
\dominit oc %ohne Hauptverzeichnis 
\faketableofcontents 

\mainmatter 
\addchap{Einleitung} \markbooth{}{Einleitung} 
\begin{multicols}{2}
...
\end{multicols}
\chapter{XXX}
\section{YYY}
\begin{multicols}{2}
...
\end{multicols}
...
\end{document}

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Sorry, Dein Beispiel ist eine einzige Katastrophe. Da sind lauter Leerzeichen, wo keine hingehören, nämlich mitten in Optionen- und Befehlsnamen. Weil mir das zu viel Arbeit mit Korrigieren war, habe ich ein eigenes Beispiel gebastelt:
\documentclass{scrbook}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{multicol}
\usepackage{blindtext}

\makeatletter
\newcounter{restorecolnumber}
\newcommand*{\chapteroriginal}{}
\let\chapteroriginal\chapter
\renewcommand*{\chapter}{%
  % Jetzt versuchen wir zu erkennen, ob wir in einer multicols-Umgebung sind:
  \def\reserved@a{multicols}\ifx\reserved@a\@currenvir
    % Wenn das so ist, speichern wir, die Spaltenzahl und beenden die Umgebung
    \setcounter{restorecolnumber}{\col@number}%
    \end{multicols}
  \else
    % Wenn nicht, setzen wir die Spaltenzahl auf 1
    \setcounter{restorecolnumber}{1}%
  \fi
  \chapteroriginal
}
\newcommand*{\@afterheadingoriginal}{}
\let\@afterheadingoriginal\@afterheading
\renewcommand{\@afterheading}{%
  \@nobreaktrue
  \ifnum\value{restorecolnumber}>\@ne
    \begin{multicols}{\value{restorecolnumber}}
    \setcounter{restorecolnumber}{\z@}%
  \fi
  \@afterheadingoriginal
}
\newcommand*{\@startsectionoriginal}{}
\let\sectionoriginal\section
\renewcommand*{\section}{%
  % Jetzt versuchen wir zu erkennen, ob wir in einer multicols-Umgebung sind:
  \def\reserved@a{multicols}\ifx\reserved@a\@currenvir
    % Wenn das so ist, speichern wir, die Spaltenzahl und beenden die Umgebung
    \setcounter{restorecolnumber}{\col@number}%
    \end{multicols}
  \else
    % Wenn nicht, setzen wir die Spaltenzahl auf 1
    \setcounter{restorecolnumber}{1}%
  \fi
  \sectionoriginal
}
\makeatother
\begin{document}
\begin{multicols}{2}
\blinddocument
\end{multicols}
\end{document}
Gezeigt habe ich das jetzt einfach mal nur für \chapter und \section. Weitere Gliederungsbefehle können entsprechend geändert werden. Für Spitzmarken (z. B. \paragraph) funktioniert das so aber nicht, wäre jedoch auch nicht sinnvoll.

An internem Wissen habe ich genutzt:
  • \col@number ist innerhalb von multicols die Anzahl der Spalten
  • \@currenvir ist in LaTeX der Name der aktuellen innersten Umgebung
  • \@afterheading wird am Ende jeder Überschrift, nach der es in einer neuen Zeile weitergeht, aufgerufen, um Seitenumbrüche nach Überschriften und auf Wunsch auch den Einzug nach einer Überschrift zu verhindern
  • \setcounter arbeitet global

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Ach, ich vergaß: Eine Liste aller verfügbaren Pakete gibt es nicht und wird es sicher nie geben. Es gibt aber eine ziemlich vollständige Liste aller auf CTAN verfügbaren Pakete und außerdem The TeX Catalogue. Zumindest letzterer sollte AFAIR auch in den Wichtigen Netzdokumenten (siehe Wiki) zu finden sein.

Ted 77
Forum-Newbie
Forum-Newbie
Beiträge: 6
Registriert: Do 28. Jan 2010, 14:21

Beitrag von Ted 77 »

Verdammt, da speichert man den Code einmal zwischen, um die Tonnen von Newbiecomments zu entfernen und das ganze lesbar zu machen, und dann passiert dabei so eine Leerzeichengrütze. :oops:

Super genial, 1001 Dank - mindestens!

Antworten