Ausrichtung von \addsec{}-Name im Inhaltsverzeichnis

Inhalt, Abbildungen, Tabellen, Quellcodes und andere Verzeichnisse


Timo Beil

Ausrichtung von \addsec{}-Name im Inhaltsverzeichnis

Beitrag von Timo Beil »

Hallo liebe LaTeX-Freunde,

ich benutze die KOMA-Klasse "scrartcl" und muss eine sehr lange Überschrift im Inhaltsverzeichnis angeben, die jedoch keine Nummerierung haben darf. Daher verwende ich \addsec{...}.

Leider wird der Name der Section im Inhaltsverzeichnis nach dem Zeilenumbruch eingerückt. Gibt es eine Möglichkeit, dies zu verhindern?

Hier mein VM:
\documentclass{scrartcl}

\begin{document} 

\tableofcontents 

\section{Dies ist eine Ueberschrift, die im Inhaltsverzeichnis MIT Nummer angezeigt werden soll und bei welcher der Absatz schoen haengend ist.}

Hier etwas Beispieltext.

\addsec{Dies ist eine Ueberschrift, die im Inhaltsverzeichnis OHNE Nummer angezeigt werden soll und bei welcher der Absatz NICHT schoen haengend ist.}

Und hier noch mehr Beispieltext.

\end{document}
Vielen Dank für Eure Hilfe!

Noch so einer

Beitrag von Noch so einer »

Als Alternative könnte ich Dir
\documentclass[toc=indentunnumbered]{scrartcl}

\begin{document}

\tableofcontents

\section{Dies ist eine Ueberschrift, die im Inhaltsverzeichnis MIT Nummer angezeigt werden soll und bei welcher der Absatz schoen haengend ist.}

Hier etwas Beispieltext.

\addsec{Dies ist eine Ueberschrift, die im Inhaltsverzeichnis OHNE Nummer angezeigt werden soll und bei welcher der Absatz NICHT schoen haengend ist.}

Und hier noch mehr Beispieltext.

\end{document}
anbieten.

Timo Beil

Beitrag von Timo Beil »

Hallo Gast,

vielen Dank für die prompte Antwort und die Alternative. Diese Möglichkeit hatte ich mittels der Forensuche entdeckt, entspricht aber leider nicht meinen Formatvorgaben.

Vielleicht gibt es noch mehr Vorschläge? Vielen Dank im Voraus.

Timo

Noch so einer

Beitrag von Noch so einer »

Dann vielleicht so:
\documentclass[toc=indentunnumbered]{scrartcl}

\let\Originaladdsectiontocentry\addsectiontocentry
\renewcommand*{\addsectiontocentry}[2]{%
  \ifstr{#1}{}{% Keine Nummer: Hier müssen wir eingreifen!
    \addtocentrydefault{nosection}{#1}{#2}%
  }{%
    % Nummer: Hier alles wie bisher
    \Originaladdsectiontocentry{#1}{#2}%
  }%
}
\makeatletter
\newcommand*\l@nosection[2]{% Aus scrartcl 3.13 geklaut und geändert:
  \ifnum \c@tocdepth >\z@
    \ifnum \lastpenalty<20009
      \addpenalty{\@secpenalty}%
    \fi
    \addvspace{1.0em \@plus\p@}%
    \setlength\@tempdima{0pt}% <----------------------- HIER
     \if@tocleft
      \ifx\toc@l@number\@empty\else
        \setlength\@tempdima{0\toc@l@number}%
      \fi
    \fi
   \begingroup
      \raggedsectionentry
      \parindent \z@ \advance\rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      \interlinepenalty\@M
      \leavevmode
      \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
      \usekomafont{sectionentry}{#1\nobreak
        \usekomafont{sectionentrypagenumber}{%
          \hfill\nobreak
          \hb@xt@\@pnumwidth{\hss#2}}}\par
    \endgroup
    \ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\relax
      \penalty20008
    \fi
  \fi
}
\makeatother
\begin{document}

\tableofcontents

\section{Dies ist eine Ueberschrift, die im Inhaltsverzeichnis MIT Nummer angezeigt werden soll und bei welcher der Absatz schoen haengend ist.}

Hier etwas Beispieltext.

\addsec{Dies ist eine Ueberschrift, die im Inhaltsverzeichnis OHNE Nummer angezeigt werden soll und bei welcher der Absatz NICHT schoen haengend ist.}

Und hier noch mehr Beispieltext.

\end{document}
Ach: Die Option wird in dem Fall nicht benötigt. Vermutlich geht es auch irgendwie, wenn man stattdessen tocstyle für das Verzeichnis verwendet. Habe ich jetzt aber nicht ausprobiert.

Timo Beil

Beitrag von Timo Beil »

Hallo noch so einer,

vielen Dank für Deine schnelle und kompetente Hilfe. So sieht das schon deutlich besser aus. Zwei Probleme gibt es aber noch:

(1) Ist es möglich, dass die Einträge aus den \addsec-Abschnitten im Inhaltsverzeichnis auch mit Pünktchen zwischen dem Titel und der Seitenzahl angezeigt werden?

(2) Ist es möglich, die Seitenzahl aus den \addsec-Abschnitten im Inhaltsverzeichnis ohne fett gedruckte Seitenzahl anzeigen zu lassen?

Hier das VM:
\documentclass{scrartcl}

% Meine Anpassungen des ToC
%-----------------------------
\usepackage{tocstyle}
\usetocstyle{allwithdot}
%-----------------------------

\let\Originaladdsectiontocentry\addsectiontocentry 
\renewcommand*{\addsectiontocentry}[2]{% 
  \ifstr{#1}{}{% Keine Nummer: Hier müssen wir eingreifen! 
    \addtocentrydefault{nosection}{#1}{#2}% 
  }{% 
    % Nummer: Hier alles wie bisher 
    \Originaladdsectiontocentry{#1}{#2}% 
  }% 
} 
\makeatletter 
\newcommand*\l@nosection[2]{% Aus scrartcl 3.13 geklaut und geändert: 
  \ifnum \c@tocdepth >\z@ 
    \ifnum \lastpenalty<20009 
      \addpenalty{\@secpenalty}% 
    \fi 
    \addvspace{1.0em \@plus\p@}% 
    \setlength\@tempdima{0pt}% <----------------------- HIER 
     \if@tocleft 
      \ifx\toc@l@number\@empty\else 
        \setlength\@tempdima{0\toc@l@number}% 
      \fi 
    \fi 
   \begingroup 
      \raggedsectionentry 
      \parindent \z@ \advance\rightskip \@pnumwidth 
      \parfillskip -\@pnumwidth 
      \interlinepenalty\@M 
      \leavevmode 
      \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip 
      \usekomafont{sectionentry}{#1\nobreak 
        \usekomafont{sectionentrypagenumber}{% 
          \hfill\nobreak 
          \hb@xt@\@pnumwidth{\hss#2}}}\par 
    \endgroup 
    \ifnum \scr@compatibility>\@nameuse{scr@v@2.96}\relax 
      \penalty20008 
    \fi 
  \fi 
} 
\makeatother 
\begin{document} 

\tableofcontents 

\section{Dies ist eine Ueberschrift, die im Inhaltsverzeichnis MIT Nummer angezeigt werden soll und bei welcher der Absatz schoen haengend ist.} 

Hier etwas Beispieltext. 

\addsec{Dies ist eine Ueberschrift, die im Inhaltsverzeichnis OHNE Nummer angezeigt werden soll und bei welcher der Absatz NICHT schoen haengend ist.} 

Und hier noch mehr Beispieltext. 

\end{document}
Vielen Dank für Deine/Eure Unterstützung.

Beste Grüße,
Timo

Noch so einer

Beitrag von Noch so einer »

Das mit der Seitenzahl geht einfach über
\setkomafont{sectionentrypagenumber}{\normalfont}
Bitte unbedingt in der KOMA-Script-Anleitung oder im KOMA-Script-Buch nachlesen!!!

Die Sache mit der Unterdrückung des Einzugs funktioniert bei tocstye aber so nicht mehr. Eine Lösung gibt es wohl nur, wenn man die Optionen von tocstyle anpasst:
\documentclass{scrartcl}

% Meine Anpassungen des ToC
%-----------------------------
\usepackage[toctextentriesleft,tocindentmanual]{tocstyle}
\usetocstyle{allwithdot}
%-----------------------------
\setkomafont{sectionentrypagenumber}{\normalfont}
\let\Originaladdsectiontocentry\addsectiontocentry
\renewcommand*{\addsectiontocentry}[2]{%
  \ifstr{#1}{}{% Keine Nummer: Hier müssen wir eingreifen!
    \addtocentrydefault{nosection}{#1}{#2}%
  }{%
    % Nummer: Hier alles wie bisher
    \Originaladdsectiontocentry{#1}{#2}%
  }%
}
\makeatletter
\newcommand*\l@nosection{% Definition von tocstyle für \l@section übernommen
                         % und nur die Einzüge rausgenommen.
  \@dottedtocline{1}{0pt}{0pt}%
}
\makeatother
\begin{document}
\tableofcontents

\section{Dies ist eine Ueberschrift, die im Inhaltsverzeichnis MIT Nummer angezeigt werden soll und bei welcher der Absatz schoen haengend ist.}

Hier etwas Beispieltext.

\addsec{Dies ist eine Ueberschrift, die im Inhaltsverzeichnis OHNE Nummer
  angezeigt werden soll und ueberhaupt nicht haengend ist.}

Und hier noch mehr Beispieltext.

\end{document}
Und nächstes Mal sagst Du bitte gleich, dass Du tocstyle verwenden willst. Ich kann meine Zeit auch noch für andere Dinge brauchen …

Timo Beil

Seiteneffekte der tocstyle-Optionen

Beitrag von Timo Beil »

Hallo Noch so einer,

vielen Dank für Deine erneute und kompetente Unterstützung. Ich weiß das wirklich sehr zu schätzen, ohne Dich wäre ich verloren. Zudem möchte ich für Deine Zusatzarbeit um Verzeihung bitten, das hatte ich nicht beabsichtigt. Ich hatte das tocstyle-Package im VM nicht angegeben, weil das Problem auch ohne dieses Paket auftrat.

Deine Lösung funktioniert hervorragend, leider verursacht sie jedoch im Zusammenspiel mit meiner Anpassung des Tabellenverzeichnisses mich ein Problem. Dies resultiert aus der Verwendung der Optionen "toctextentriesleft,tocindentmanual" beim tocstyle-Package. Mit diesen funktioniert die automatische Einrückung nach "Tab. 1:" im Tabellenverzeichnis leider nicht mehr.

Hast Du/Ihr hierfür auch eine Lösung parat?
\documentclass{scrartcl}

\usepackage[ngerman]{babel}

\usepackage[toctextentriesleft,tocindentmanual]{tocstyle} 
% Bei Verwendung der Optionen "toctextentriesleft,tocindentmanual" funktioniert mein individualisiertes
% Tabellenverzeichnis nicht mehr
%\usepackage{tocstyle} 
\usetocstyle{allwithdot} 

\setkomafont{sectionentrypagenumber}{\normalfont} 
\let\Originaladdsectiontocentry\addsectiontocentry 
\renewcommand*{\addsectiontocentry}[2]{% 
  \ifstr{#1}{}{% Keine Nummer: Hier müssen wir eingreifen! 
    \addtocentrydefault{nosection}{#1}{#2}% 
  }{% 
    % Nummer: Hier alles wie bisher 
    \Originaladdsectiontocentry{#1}{#2}% 
  }% 
} 
\makeatletter 
\newcommand*\l@nosection{% Definition von tocstyle für \l@section übernommen 
                         % und nur die Einzüge rausgenommen. 
  \@dottedtocline{1}{0pt}{0pt}% 
} 
\makeatother

% Namen von Textelementen aendern
\renewcaptionname{ngerman}{\tablename}{Tab.}
\AtBeginDocument{
	\newcaptionname{ngerman}{\tableautorefname}{Tab.}
}

% Bezeichnungen von Abbildungen und Tabellen ändern
\settocfeature[lot]{entryhook}{Tab.\nobreakspace} 

%---------------------------------------------------------------------
% HIER LIEGT DAS PROBLEM
% Hägenden Einzug im Tabellenverzeichnis einstellen und Doppelpunkt nach "Tab." einfügen
% Benötigt mehrere Durchläufe!!!
% Bei Verwendung der Optionen "toctextentriesleft,tocindentmanual" funktioniert die
% Einstellung des automatischen Abstandes zwischen "Tab. x" und dem Tabellennamen
% nicht mehr
\makeatletter 
\AfterTOCHead[lot]{% 
  \let\SAVEDNUMBERLINE\tocstyle@numberline%
  \renewcommand*{\tocstyle@numberline}[1]{% 
  \renewcommand*{\autodot}{:}%
  \SAVEDNUMBERLINE{\tablename\ #1}%
  }% 
} 
\makeatother
%---------------------------------------------------------------------

\begin{document} 
\tableofcontents

% Tabellenverzeichnis linksbuendig beginnen
\selecttocstyleoption{tocflat}
\listoftables

\section{Dies ist eine Ueberschrift, die im Inhaltsverzeichnis MIT Nummer angezeigt werden soll und bei welcher der Absatz schoen haengend ist.} 

Hier etwas Beispieltext.

\addsec{Dies ist eine Ueberschrift, die im Inhaltsverzeichnis OHNE Nummer angezeigt werden soll und ueberhaupt nicht haengend ist.} 

\begin{table}
\begin{tabular}{ll}
	\hline
	Linke Tasche & Rechte Tasche \\
	\hline
\end{tabular}
\caption{Eine Beispieltabelle, die im Tabellenverzeichnis nicht richtig angezeigt wird}
\end{table}

Und hier noch mehr Beispieltext. 

\end{document}
Vielen Dank für Deine/Eure Hilfe!
Timo

Noch so einer

Beitrag von Noch so einer »

Das ufert langsam zu einer never ending story aus …

Dass die Verwendung eines Pakets, das die Verzeichnisse umformatiert, einen Einfluss auf die Lösung für ein Formatierungsproblem in einem Verzeichnis hat, sollte Dich nicht sooo wahnsinnig überraschen.

Und \selecttocstyleoption hast Du ja ganz offensichtlich auch schon entdeckt. Auf ein
\selecttocstyleoption{tocindentauto}
vor \listoftables könnte man da vielleicht auch kommen …

Und ja, nach der Änderung sind wieder mehrere LaTeX-Läufe notwendig, bis das Tabellenverzeichnis korrekt ist.

Timo Beil

Vielen Dank

Beitrag von Timo Beil »

Hallo Noch so einer,

jetzt klappt's, noch einmal vielen Dank für Deine tatkräftige Unterstützung.

Beste Grüße,
Timo

Antworten