如何使用 KOMA-Script 将章节包含在修复列表中

如何使用 KOMA-Script 将章节包含在修复列表中

我如何从-Package将章节添加到\listoffixmes( -list) ?我找到了很多将章节/部分添加到图表/表格/... 列表中的解决方案,但对我来说,它们都不适用于 KOMA 类。lox{fixme}

我认为重建一个可行的解决方案来与 fixme 配合使用没什么大不了的。

KOMA 级“解决方案”不起作用:

此解决方案Todonotes:按部分分组待办事项列表 破坏了\paragraph{}-Command,我收到错误:Latex Error: ./miniExample.tex:425 Missing number, treated as zero.

图表列表中的部分标题?有两种解决方案,解决方案 1 可以查找,但即使没有该列表的元素也会添加章节。

Gonzalo Medina 的第二个解决方案根本不起作用。但我认为这是我必须走的正确道路……

非KOMA级‘解决方案’:

是否在带有 titletoc 的图表列表中包含章节? 不适用于 KOMA 类 ( Latex Error: ./miniExample.tex:376 Missing \endcsname inserted.)

一个最小的例子:

\documentclass{scrreprt}
\usepackage[draft]{fixme}
\usepackage{etoolbox}


% Code to add the chapter to the listoffixmes ...


\begin{document}

\listoffixmes

\chapter{chapter}
\section{section1}
  \fixme{test1}
\subsubsection{subsubsection}
\paragraph{paragraph}
\section{section2}
\chapter{chapter2}
\section{section3}
  \fixme{test2}

\end{document}

答案1

要将章节添加到更正列表中,您可以使用

\KOMAoptions{chapteratlists=entry}
\addtotoclist[fixme.sty]{lox}
\setuptoc{lox}{chapteratlist}
\makeatletter
\renewcommand*{\listoffixmes}{\listoftoc[{\@fxlistfixmename}]{lox}}
\makeatother

结果:

在此处输入图片描述

要删除没有修复的章节条目,您可以使用Markus Kohm 的解决方案(德语):

% --- Source: http://www.komascript.de/comment/5070#comment-5070 (Markus Kohm)
\makeatletter
\let\chapterhas@original@addcontentsline\addcontentsline
\renewcommand*{\addcontentsline}[1]{%
  \immediate\write\@auxout{\string\chapterhas{\thechapter}{#1}}%
  \chapterhas@original@addcontentsline{#1}%
}
\newcommand*{\chapterhas}[2]{%
  \global\@namedef{chapterhas@#1@#2}{true}%
}
\renewcommand*{\addchaptertocentry}[2]{%
  \addtocentrydefault{chapter}{#1}{#2}%
  \if@chaptertolists
    \doforeachtocfile{%
      \iftocfeature{\@currext}{chapteratlist}{%
        \ifundefinedorrelax{chapterhas@\thechapter @\@currext}{%
        }{%
          \addxcontentsline{\@currext}{chapteratlist}[{#1}]{#2}%
        }%
      }{}%
    }%
    \@ifundefined{float@addtolists}{}{\scr@float@addtolists@warning}%
  \fi
}
\makeatother
% ----

这适用于由 KOMA-Script 包控制的所有tocbasic包含章节条目的列表。

请注意,如果您使用hyperref此代码,则必须在加载包后插入hyperref。 (请参阅此答案下方@Kugelfisch15的评论。)

结果:

在此处输入图片描述

代码:

\documentclass{scrreprt}
\usepackage[draft]{fixme}

\KOMAoptions{chapteratlists=entry}
\addtotoclist[fixme.sty]{lox}
\setuptoc{lox}{chapteratlist}
\makeatletter
\renewcommand*{\listoffixmes}{\listoftoc[{\@fxlistfixmename}]{lox}}
\makeatother

%\usepackage{hyperref}
% --- Source: http://www.komascript.de/comment/5070#comment-5070 (Markus Kohm)
\makeatletter
\let\chapterhas@original@addcontentsline\addcontentsline
\renewcommand*{\addcontentsline}[1]{%
  \immediate\write\@auxout{\string\chapterhas{\thechapter}{#1}}%
  \chapterhas@original@addcontentsline{#1}%
}
\newcommand*{\chapterhas}[2]{%
  \global\@namedef{chapterhas@#1@#2}{true}%
}
\renewcommand*{\addchaptertocentry}[2]{%
  \addtocentrydefault{chapter}{#1}{#2}%
  \if@chaptertolists
    \doforeachtocfile{%
      \iftocfeature{\@currext}{chapteratlist}{%
        \ifundefinedorrelax{chapterhas@\thechapter @\@currext}{%
        }{%
          \addxcontentsline{\@currext}{chapteratlist}[{#1}]{#2}%
        }%
      }{}%
    }%
    \@ifundefined{float@addtolists}{}{\scr@float@addtolists@warning}%
  \fi
}
\makeatother
% ----

\begin{document}
\listoffixmes

\chapter{Chapter with Fixme}
\section{section1}
\fxfatal{test1}
\subsubsection{subsubsection}
\paragraph{paragraph}
\section{section2}

\chapter{Chapter without Fixme}

\chapter{Chapter with Fixme}
\section{section3}
  \fxfatal{test2}
\end{document}

答案2

您可以通过黑客手段\chapterformat添加它,尽管我不知道这可能会产生什么副作用。

请注意,\fixme已弃用,当您尝试使用它时,包会告诉您这一点。此外,KOMA Script 对其中一个包一点也不满意 - 大概是fixme。请参阅控制台输出以获取信息和建议。

\documentclass{scrreprt}
\usepackage[draft]{fixme}
\usepackage{etoolbox}
\apptocmd{\chapterformat}{%
  \addtocontents{lox}{\protect\contentsline{chapter}{\chaptername{} \thechapter}{}}%
}{\typeout{chapterformat patched OK!}}{\typeout{chapterformat patch failed}}
\begin{document}
\listoffixmes
\chapter{chapter}
\section{section1}
\fxfatal{test1}
\subsubsection{subsubsection}
\paragraph{paragraph}
\section{section2}
\chapter{chapter2}
\section{section3}
\fxfatal{test2}
\end{document}

章节格式

相关内容