我如何从-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}