如何为新的浮动环境设置 entryprefix?

如何为新的浮动环境设置 entryprefix?

例如,在使用 scrreprt 类时,我可以使用选项 listof=entryprefix 将“Abbildung”置于我的图表列表中的编号前面。使用命令

\renewcommand*\listoflofentryname{Abb.}
\renewcommand*\listoflotentryname{Tab.}

我可以分别将图形列表更改为“Abb.”和将表格列表更改为“Tab.”

现在我声明一个新的浮动环境

\usepackage{newfloat}
    \DeclareFloatingEnvironment[ % neue Float Umgebung für Gleichungen
        fileext=loe,
        listname={Formelverzeichnis},
        name=Formel,
        placement=h,
        within=chapter,
        chapterlistsgaps=off,
        ]{eq}

并添加方程列表

\listofeqs

是否有类似的方法让“Formel”位于方程式列表中方程式编号的前面?或者是否有更简单的方法,而不必声明新的浮点环境?

编辑:在 newfloat 文档中有一个使用 tocloft 包的示例(第 5 页),但这个包似乎与 KOMA 类存在一些问题,如果没有它,声明就会产生错误并停止编译。

梅威瑟:

\documentclass[
    listof=totoc, % "List of" in toc
    listof=entryprefix, % "List of" with entryprefix
    ]{scrreprt}
    
\usepackage[british, ngerman]{babel}
\usepackage{booktabs}
\usepackage{amsmath}
\usepackage{newfloat}
    \DeclareFloatingEnvironment[ % new Float environment  for equations
        fileext=loe,
        listname={Formelverzeichnis},
        name=Formel,
        placement=h,
        within=chapter,
        chapterlistsgaps=off,
        ]{eq}
        
\renewcommand*\listoflotentryname{Tab.} % change entryprefix for tables
        
\begin{document}
\tableofcontents
\listoftables
\listofeqs % List of Equations

\chapter{Test}

\begin{table}[h]
    \centering
    \caption[Testtabelle (Verzeichnis)]{Testtabelle}
    \begin{tabular}{ll}
        
        a & b \\
        
        c & d \\
        
        e & f
        
    \end{tabular}   
\end{table}

\begin{eq}  % Testformel
    \begin{subequations}
        \begin{align}
            a &= b \\
            b &= c.
        \end{align}
    \end{subequations}
    \caption[Testformel (Verzeichnis)]{Testformel}
\end{eq}

\end{document}

答案1

警告/免责声明:新环境的计数器eq和方程的计数器是独立的计数器。因此它们的值可能不同:eq环境中可能存在多个编号方程,环境外可能存在编号方程eq,或者环境可能eq没有编号方程。


要定义依赖于前缀的语言,请使用

\newcaptionname{ngerman}{\listoflofentryname}{Abb.}
\newcaptionname{ngerman}{\listoflotentryname}{Tab.}

\newcaptionname{ngerman}{\listofloeentryname}{Gl.}

另外,无需加载包newfloat。您可以使用\DeclareNewTOCKOMA-Script提供的包tocbasic。请注意,是tocbasic由KOMA-Script类加载的。

使用选项可以声明float一个浮动环境<type>eq在下面的例子中),使用选项可以声明nonfloat一个非浮动环境(在下面的例子中)<type>-eq-

\documentclass[
  listof=totoc,
  listof=entryprefix,
  listof=nochaptergap,% <- added: no chapter gaps in LoF, LoT, ...
  captions=tableabove% <- added
  ]{scrreprt}
\usepackage{lipsum}% only for dummy text
\usepackage[british,ngerman]{babel}
\usepackage{booktabs}
\usepackage{amsmath}

\DeclareNewTOC[
  category=float,
  counterwithin=chapter,
  float,% declares floating environment eq
  floatpos=ht,
  nonfloat,% declares non-floating environment eq-
  listname={Formelverzeichnis},
  name=Formel,
  tocentrystyle=tocline,
  tocentrylevel:=table,
  tocentryindent:=table,
  tocentrynumwidth:=table,
  type=eq,
  ]{loe}

\newcaptionname{ngerman}{\listoflotentryname}{Tab.}% <- changed
\newcaptionname{ngerman}{\listofloeentryname}{Gl.}% <- added

\begin{document}
\tableofcontents
\listoftables
\listofeqs

\chapter{Test}
\begin{table}[h]
  \centering
  \caption[Text 1 für das Tabellenverzechnis]{Text 1 über Tabelle}
  \begin{tabular}{ll}
    a & b \\
    c & d \\
    e & f
  \end{tabular}
\end{table}

\begin{eq} \label{eq:eq1}
  \begin{subequations}
    \begin{align}
      a &= b \\
      b &= c.
    \end{align}
  \end{subequations}
  \caption[Testformel 1 (Verzeichnis)]{Testformel 1}
\end{eq}

\chapter{Foo}
\begin{table}[h]
  \centering
  \caption[Text 2 für das Tabellenverzechnis]{Text 2 über Tabelle}
  \begin{tabular}{ll}
    a & b \\
    c & d \\
    e & f
  \end{tabular}
\end{table}

\lipsum[1-3]

\begin{eq-} \label{eq:eq2}
  \begin{subequations}
    \begin{align}
      a &= b \\
      b &= c.
    \end{align}
  \end{subequations}
  \caption[Testformel 2 (Verzeichnis)]{Testformel 2}
\end{eq-}
\lipsum
\end{document}

在此处输入图片描述


如果你确实想使用包newfloat

例子:

\documentclass[
  listof=totoc,
  listof=entryprefix,
  listof=nochaptergap% <- added: no chapter gaps in LoF, LoT, ...
  ]{scrreprt}
\usepackage{lipsum}% only for dummy text
\usepackage[british,ngerman]{babel}
\usepackage{booktabs}
\usepackage{amsmath}
\usepackage{newfloat}
\DeclareFloatingEnvironment[ % neue Float Umgebung für Gleichungen
  fileext=loe,
  listname={Formelverzeichnis},
  name=Formel,
  placement=h,
  within=chapter,
  %chapterlistsgaps=off,
  ]{eq}


\newcaptionname{ngerman}{\listoflotentryname}{Tab.}% <- changed
\newcaptionname{ngerman}{\listofloeentryname}{Gl.}% <- added

\begin{document}
\tableofcontents
\listoftables
\listofeqs

\chapter{Test}
\begin{table}[h]
  \centering
  \caption[Text 1 für das Tabellenverzechnis]{Text 1 über Tabelle}
  \begin{tabular}{ll}
    a & b \\
    c & d \\
    e & f
  \end{tabular}
\end{table}

\begin{eq} \label{eq:eq1}
  \begin{subequations}
    \begin{align}
      a &= b \\
      b &= c.
    \end{align}
  \end{subequations}
  \caption[Testformel 1 (Verzeichnis)]{Testformel 1}
\end{eq}

\chapter{Foo}
\begin{table}[h]
  \centering
  \caption[Text 2 für das Tabellenverzechnis]{Text 2 über Tabelle}
  \begin{tabular}{ll}
    a & b \\
    c & d \\
    e & f
  \end{tabular}
\end{table}

\lipsum[1-3]
\begin{eq} \label{eq:eq2}
  \begin{subequations}
    \begin{align}
      a &= b \\
      b &= c.
    \end{align}
  \end{subequations}
  \caption[Testformel 2 (Verzeichnis)]{Testformel 2}
\end{eq}
\lipsum
\end{document}

相关内容