将作者添加到目录中后,如果文章名称较长,目录中会出现不必要的缩进

将作者添加到目录中后,如果文章名称较长,目录中会出现不必要的缩进

我发现这些答案对于将不同作者的姓名添加到目录中的章节非常有帮助:

在目录中的章节标题前添加作者

包括我

\makeatletter
\DeclareRobustCommand\authortoctext[1]{%
{\addvspace{10pt}\nopagebreak\leftskip0em\relax
\rightskip \@tocrmarg\relax
\noindent\itshape#1\par\addvspace{-7pt}}}
\makeatother
\newcommand\authortoc[1]{%
  \gdef\chapterauthor{#1}%
  \addtocontents{toc}{\authortoctext{#1}}}

放入我的代码中,用 lualatex 进行编译,并且成功了。

但说到更长文章标题下一行有一个缩进

看这里:

\documentclass[paper=a4,DIV=11,12pt,headings=small,titlepage]{scrbook}
\usepackage{fontspec}
\usepackage[english,ngerman]{babel}
\setcounter{tocdepth}{0}
\renewcommand*\thesection{\arabic{section}}
\usepackage{xpatch}
\xpretocmd{\addchap}{\setcounter{section}{0}}{}{}

\renewcommand*\chapterheadstartvskip{\vspace*{-\topskip}}
\renewcommand*\chapterheadendvskip{%
 \vspace*{1\baselineskip plus .1\baselineskip minus .200\baselineskip}}
%\usepackage{url}
\setkomafont{sectioning}{\rmfamily\normalfont} 
%\addtokomafont{chapter}{\large}
%\addtokomafont{section}{\normalsize\textbf}
\addtokomafont{subsection}{\normalsize\textbf}
\addtokomafont{subsubsection}{\normalsize}
\usepackage{blindtext}
 \usepackage{tocloft}
    \renewcommand\cftchappagefont{\normalfont}  % nicht fett
\renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}}

\makeatletter
\DeclareRobustCommand\authortoctext[1]{%
{\addvspace{10pt}\nopagebreak\leftskip0em\relax
\rightskip \@tocrmarg\relax
\noindent\itshape#1\par\addvspace{-7pt}}}
\makeatother
\newcommand\authortoc[1]{%
  \gdef\chapterauthor{#1}%
  \addtocontents{toc}{\authortoctext{#1}}}

\begin{document}

\makeatletter
 \renewcommand\tableofcontents{\@starttoc{toc}}
  \makeatother
 \section*{\Large Inhaltsverzeichnis \vskip 5mm}
\tableofcontents
\thispagestyle{empty}

\authortoc{Martina Müller}
\addchap["`Was geht mich das an?"' -- Eine Einführung in den Begriff und das Denken dessen, was mich angeht oder nicht angeht]{\emph{Martina Müller} \\[1em] "`Was geht mich das an?"' -- \\ Eine Einführung in den Begriff und das Denken dessen, was mich angeht oder nicht angeht \vskip 6mm} 

\blindtext
\section{Betroffenheit}
\blindtext
\subsection{Aktives Betroffensein}
\blindtext
\subsection{Passives Betroffensein}
\blindtext
\section{Angenervt sein}
\blindtext

\authortoc{Marcus Schmidt}
\addchap[Butter bei die Fische. Zur Reduktion auf das Wesentliche]{\emph{Marcus Schmidt} \\[1em] Butter bei die Fische. \\ Zur Reduktion auf das Wesentliche \vskip 6mm}

\blindtext
\section{Fische und anderes Meeresgetier}
\blindtext
\addsec{\emph{Exkurs}: Sternzeichen}
\blindtext
\section{Warum Sternzeichen nerven}
\blindtext
\end{document}

关于如何抑制这种缩进,您有什么想法吗?非常感谢!

答案1

您正在使用 KOMA-Script 类。因此,这里有一个建议,需要最新的 KOMA 版本(至少 v. 3.21),但不需要tocloft

请注意,编号章节目录条目的下一行也不会缩进。其章节编号的保留水平空间为 1.5em,但可以根据需要调整此值。

在此处输入图片描述

在此处输入图片描述

代码:

\documentclass[DIV=11,12pt,headings=small,titlepage,
  headings=optiontoheadandtoc
]{scrbook}[2016/06/14]
\usepackage{fontspec}
\usepackage[english,ngerman]{babel}
\usepackage{xpatch}

\setcounter{tocdepth}{0}
\renewcommand*\thesection{\arabic{section}}

\setkomafont{sectioning}{\rmfamily\normalfont}
\addtokomafont{chapterentry}{\normalfont}
\addtokomafont{subsection}{\normalsize\bfseries}
\addtokomafont{subsubsection}{\normalsize}
\newkomafont{chapterauthor}{\emph}
\makeatletter
\RedeclareSectionCommand[%
  beforeskip=-1sp,%
  afterskip=1.5\baselineskip plus .1\baselineskip minus .2\baselineskip,%
  tocentrynumberformat=\@gobble,
  tocnumwidth=0pt,
  toclinefill=\TOCLineLeaderFill,
  toconstarthigherlevel=\vspace{-.75\baselineskip}
]{chapter}


\DeclareTOCStyleEntry[{
  level=\parttocdepth,
  beforeskip=10pt,
  indent=0pt,
  numwidth=0pt,
  linefill=\hfill,
  entryformat=\textit,
  pagenumberbox=\@gobble
}]{tocline}{chapterauthor}

\newcommand*\@chapterauthor{}
\newcommand\chapterauthor[1]{\def\@chapterauthor{#1}}

\xpatchcmd{\addchaptertocentry}{%
    \addtocentrydefault{chapter}{#1}{#2}%
  }{%
    \ifstr{\@chapterauthor}{}{}{
      \addtocentrydefault{chapterauthor}{}{\@chapterauthor}%
    }%
    \ifstr{#1}{}
      {\addtocentrydefault{chapter}{#1}{#2}}
      {\addtocentrydefault{chapter}{}{\makebox[1.5em][l]{#1\autodot}#2}}%
  }{}{\PatCHFaiLED}

\renewcommand\chapterlinesformat[3]{%
  \ifstr{\@chapterauthor}{}{}{{\usekomafont{chapterauthor}\@chapterauthor}\\*[1em]}
  \@hangfrom{#2}{#3}%
  \xdef\@chapterauthor{}%
}
\makeatother

\usepackage{blindtext}
\begin{document}
\tableofcontents

\chapterauthor{Martina Müller}
\addchap[
    tocentry={"`Was geht mich das an?"' -- Eine Einführung in den Begriff und das Denken dessen, was mich angeht oder nicht angeht},
    head={"`Was geht mich das an?"'}
  ]
  {"`Was geht mich das an?"' -- \\ Eine Einführung in den Begriff und das Denken dessen, was mich angeht oder nicht angeht} 

\blindtext
\section{Betroffenheit}
\blindtext
\subsection{Aktives Betroffensein}
\blindtext
\subsection{Passives Betroffensein}
\blindtext
\section{Angenervt sein}
\blindtext

\chapterauthor{Marcus Schmidt}
\addchap[Butter bei die Fische. Zur Reduktion auf das Wesentliche]{Butter bei die Fische. \\ Zur Reduktion auf das Wesentliche}

\blindtext
\section{Fische und anderes Meeresgetier}
\blindtext
\addsec{\emph{Exkurs}: Sternzeichen}
\blindtext
\section{Warum Sternzeichen nerven}
\blindtext
\end{document}

如果设置了 class 选项,则可以定义或的可选参数的headings=optiontotocandhead选项。然后您可以使用author\addchap\chapter

\addchap[
    author={Author of the chapter},
    tocentry={TOC entry for this chapter},
    head={Running head for this chapter}
  ]{Chapter title}

例子:

\documentclass[DIV=11,12pt,headings=small,titlepage,
  headings=optiontoheadandtoc
]{scrbook}[2016/06/14]
\usepackage{fontspec}
\usepackage[english,ngerman]{babel}
\usepackage{xpatch}

\setcounter{tocdepth}{0}
\renewcommand*\thesection{\arabic{section}}

\setkomafont{sectioning}{\rmfamily\normalfont}
\addtokomafont{chapterentry}{\normalfont}
\addtokomafont{subsection}{\normalsize\bfseries}
\addtokomafont{subsubsection}{\normalsize}
\newkomafont{chapterauthor}{\emph}

\makeatletter
\RedeclareSectionCommand[%
  beforeskip=-1sp,%
  afterskip=1.5\baselineskip plus .1\baselineskip minus .2\baselineskip,%
  tocentrynumberformat=\@gobble,
  tocnumwidth=0pt,
  toclinefill=\TOCLineLeaderFill,
  toconstarthigherlevel=\vspace{-.75\baselineskip}
]{chapter}


\DeclareTOCStyleEntry[{
  level=\parttocdepth,
  beforeskip=10pt,
  indent=0pt,
  numwidth=0pt,
  linefill=\hfill,
  entryformat=\textit,
  pagenumberbox=\@gobble
}]{tocline}{chapterauthor}

\providecommand*\@currentauthor{}
\FamilyStringKey[.section]{KOMAarg}{author}{\@currentauthor}

\xpatchcmd{\addchaptertocentry}{%
    \addtocentrydefault{chapter}{#1}{#2}%
  }{%
    \ifstr{\@currentauthor}{}{}{
      \addtocentrydefault{chapterauthor}{}{\@currentauthor}%
    }%
    \ifstr{#1}{}
      {\addtocentrydefault{chapter}{#1}{#2}}
      {\addtocentrydefault{chapter}{}{\makebox[1.5em][l]{#1\autodot}#2}}%
  }{}{\PatCHFaiLED}

\renewcommand\chapterlinesformat[3]{%
  \ifstr{\@currentauthor}{}{}{{\usekomafont{chapterauthor}\@currentauthor}\\[1em]}
  \@hangfrom{#2}{#3}%
  \xdef\@currentauthor{}%
}

\xapptocmd\chapterlineswithprefixformat{\xdef\@currentauthor{}}{}{\PatchFailed}
\xapptocmd\sectionlinesformat{\xdef\@currentauthor{}}{}{\PatchFailed}
\xapptocmd\sectioncatchphraseformat{\xdef\@currentauthor{}}{}{\PatchFailed}
\makeatother

\usepackage{blindtext}
\begin{document}
\tableofcontents

\addchap[
    author={Martina Müller},
    tocentry={"`Was geht mich das an?"' -- Eine Einführung in den Begriff und das Denken dessen, was mich angeht oder nicht angeht},
    head={"`Was geht mich das an?"'}
  ]
  {"`Was geht mich das an?"' -- \\ Eine Einführung in den Begriff und das Denken dessen, was mich angeht oder nicht angeht} 

\blindtext
\section{Betroffenheit}
\blindtext
\subsection{Aktives Betroffensein}
\blindtext
\subsection{Passives Betroffensein}
\blindtext
\section{Angenervt sein}
\blindtext

\addchap[
  author={Marcus Schmidt},
  tocentry={Butter bei die Fische. Zur Reduktion auf das Wesentliche},
  head={Butter bei die Fische. Zur Reduktion auf das Wesentliche}
  ]{Butter bei die Fische. \\ Zur Reduktion auf das Wesentliche}

\blindtext
\section{Fische und anderes Meeresgetier}
\blindtext
\addsec{\emph{Exkurs}: Sternzeichen}
\blindtext
\section{Warum Sternzeichen nerven}
\blindtext

\chapter{Test}
\end{document}

相关内容