KOMA 脚本中 listof=entryprefix 和 chapteratlists=entry 中的 chapterprefix 存在问题

KOMA 脚本中 listof=entryprefix 和 chapteratlists=entry 中的 chapterprefix 存在问题

我正在用 XeLaTex 中的 scrbook-class 写论文。我的图表和表格必须在整个文档中编号(而不是在章节内),并且我希望它们拼写出来(“Abbildung”和“Tabelle”由 ngerman 自动完成)。我还必须在图表和表格列表中添加缩写的图表和表格名称(“Abb.”和“Tab.”),我使用listof=entryprefix并更改了条目名称,例如\renewcommand*\listoflofentryname{Abb.}

由于我有很多图表和表格,我希望章节显示在浮点列表中,以使其更具结构性并简化搜索,这可以通过 来实现chapteratlists=entry。所以,我希望图表/表格列表如下所示:

图片列表

1 简介

Abb. 1 第一个图的标题...........7

Abb. 2 第二幅图的标题.......9

2 第二章

附录 3 第三幅图的标题......15

然而,问题是我得到了这个:

图片列表

附录 1 简介

附录 1 第一个图的标题.......7

不知何故,entryprefix(“Abb。”/“Tab”) 和chapterprefix(“Kapitel”/“chapter”我不想显示) 混淆了,并且 entryprefix 被转移到 chapterprefix 上,无论我是否更改图形/表格的条目名称,也无论我是否使用chapterprefix=false/true。这是我的 MWE:

\documentclass[ngerman,
        listof=totoc,
        chapteratlists=entry,
        chapterprefix=false,% problem remains even if I choose "true"
        listof=entryprefix]{scrbook}
\usepackage[ngerman]{babel}     
\usepackage{fontspec}
\usepackage{chngcntr}
    \counterwithout{figure}{chapter}
    \counterwithout{table}{chapter}
\usepackage{mwe}
\usepackage[hidelinks]{hyperref}% 

% caption names
\addtokomafont{captionlabel}{\bfseries}
\renewcommand*\listoflofentryname{\bfseries Abb.}% problem remains even if I remove this line
\renewcommand*\listoflotentryname{\bfseries Tab.}% problem remains even if I remove this line

\begin{document}
\tableofcontents
\listoffigures
\listoftables

\blinddocument

\begin{figure}[!h]
    \centering
    \rule{5cm}{2cm}
    \caption{First figure.}
\end{figure}

\begin{table}[h]
    \caption{First table.}
    \noindent
    \centering
    \begin{tabular}{|c|c|}
        \hline
        a & b\tabularnewline
        \hline\hline
        1 & 2\tabularnewline
        \hline
    \end{tabular}
\end{table}

\begin{figure}[!h]
    \centering
    \rule{5cm}{2cm}
    \caption{Second figure.}
\end{figure}

\begin{table}[h]
    \caption{Second table.}
    \noindent
    \centering
    \begin{tabular}{|c|c|}
        \hline
        a & b\tabularnewline
        \hline\hline
        1 & 2\tabularnewline
        \hline
        \end{tabular}
\end{table}

\end{document}

我当然读过 KOMA 文档。尽管文档非常详细,或者可能是因为我不是专家,但我找不到针对我的问题的建议,如果能得到任何帮助,我将非常高兴。谢谢!

答案1

作为一种解决方法,您可以删除选项并更改和listof=entryprefix的条目样式的声明:figuretable

\documentclass[ngerman,
        listof=totoc,
        chapteratlists=entry,
        chapterprefix=false,
        %listof=entryprefix
]{scrbook}
\usepackage[ngerman]{babel}
\usepackage{fontspec}
\usepackage{chngcntr}
    \counterwithout{figure}{chapter}
    \counterwithout{table}{chapter}
\usepackage{mwe}
\usepackage[hidelinks]{hyperref}% 

% caption names
\addtokomafont{captionlabel}{\bfseries}
\renewcommand*\listoflofentryname{Abb.}
\renewcommand*\listoflotentryname{Tab.}

\newcommand\entrynumberwithprefix[2]{%
  \bfseries\csname listof#1entryname\endcsname\ #2
}
\DeclareTOCStyleEntry[
  indent=0pt,
  dynnumwidth,
  entrynumberformat=\entrynumberwithprefix{lof}
]{default}{figure}
\DeclareTOCStyleEntry[
  indent=0pt,
  dynnumwidth,
  entrynumberformat=\entrynumberwithprefix{lot}
]{default}{table}

\begin{document}
\tableofcontents
\listoffigures
\listoftables

\blinddocument

\begin{figure}[!h]
    \centering
    \rule{5cm}{2cm}
    \caption{First figure.}
\end{figure}

\begin{table}[h]
    \caption{First table.}
    \noindent
    \centering
    \begin{tabular}{|c|c|}
        \hline
        a & b\tabularnewline
        \hline\hline
        1 & 2\tabularnewline
        \hline
    \end{tabular}
\end{table}

\begin{figure}[!h]
    \centering
    \rule{5cm}{2cm}
    \caption{Second figure.}
\end{figure}

\begin{table}[h]
    \caption{Second table.}
    \noindent
    \centering
    \begin{tabular}{|c|c|}
        \hline
        a & b\tabularnewline
        \hline\hline
        1 & 2\tabularnewline
        \hline
        \end{tabular}
\end{table}
\end{document}

运行三次即可获得

在此处输入图片描述


您还可以修补\addchaptertocentry

\documentclass[ngerman,
        listof=totoc,
        chapteratlists=entry,
        chapterprefix=false,
        listof=entryprefix
]{scrbook}
\usepackage[ngerman]{babel}
\usepackage{fontspec}
\usepackage{chngcntr}
    \counterwithout{figure}{chapter}
    \counterwithout{table}{chapter}
\usepackage{mwe}
\usepackage[hidelinks]{hyperref}% 

% caption names
\addtokomafont{captionlabel}{\bfseries}
\renewcommand*\listoflofentryname{Abb.}
\renewcommand*\listoflotentryname{Tab.}
\DeclareTOCStyleEntry[entrynumberformat=\textbf]{default}{figure}
\DeclareTOCStyleEntry[entrynumberformat=\textbf]{default}{table}

\usepackage{xpatch}
\makeatletter
\xpatchcmd\addchaptertocentry
  {\addxcontentsline{\@currext}{chapteratlist}[{#1}]{#2}}
  {\addxcontentsline{\@currext}{chapteratlist}{\makebox[1.5em][l]{#1}#2}}
  {}{\PatchFailed}
\makeatother

\begin{document}
\tableofcontents
\listoffigures
\listoftables

\blinddocument

\begin{figure}[!h]
    \centering
    \rule{5cm}{2cm}
    \caption{First figure.}
\end{figure}

\begin{table}[h]
    \caption{First table.}
    \noindent
    \centering
    \begin{tabular}{|c|c|}
        \hline
        a & b\tabularnewline
        \hline\hline
        1 & 2\tabularnewline
        \hline
    \end{tabular}
\end{table}

\begin{figure}[!h]
    \centering
    \rule{5cm}{2cm}
    \caption{Second figure.}
\end{figure}

\begin{table}[h]
    \caption{Second table.}
    \noindent
    \centering
    \begin{tabular}{|c|c|}
        \hline
        a & b\tabularnewline
        \hline\hline
        1 & 2\tabularnewline
        \hline
        \end{tabular}
\end{table}
\end{document}

运行三次即可获得

在此处输入图片描述

相关内容