回忆录:将章节标题添加到“列表...”

回忆录:将章节标题添加到“列表...”

我想将章​​节标题添加到图表等列表中。我无法在手册中找到解决方案memoir,尽管解决方案可能包含在其中,但我不知道我到底在寻找什么,所以我很抱歉。

我已经修改了RicoRally 的 EDIT 解决方案在这里应用于章节,但memoir检测不到标题,或者它们被称为我不知道的其他名称。代码\documentclass{memoir}生成以下 lof:

人物回忆录类列表

而代码\documentclass{report}生成了这个 lof:

图表列表 报告类别

我正在使用的代码是:

\documentclass[oneside]{memoir}

\usepackage{lipsum}
\usepackage{etoolbox}

\makeatletter
\def\thischaptertitle{}\def\thischapternumber{}
\newtoggle{noFigs}

\apptocmd{\@chapter}%
  {\gdef\thischaptertitle{#1}\gdef\thischapternumber{\thechapter}%
    \global\toggletrue{noFigs}}{}{}

\AtBeginDocument{%
  \AtBeginEnvironment{figure}{%
    \iftoggle{noFigs}{
      \addtocontents{lof}{\protect\contentsline {chapter}%
        {\protect\numberline {\thischapternumber.} {\thischaptertitle}}{}{} }
      \global\togglefalse{noFigs}
    }{}
  }%
}

\long\def\@caption#1[#2]#3{%
  \par
  \gdef\my@caption{#2}
  \begingroup
    \@parboxrestore
    \if@minipage
      \@setminipage
    \fi
    \normalsize
    \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
  \endgroup}

\renewenvironment{figure}%
               {\@float{figure}}%
               {\end@float
               \addcontentsline{lof}{figure}%
                   {\protect\numberline{\thefigure}{\my@caption}}%
               }%
\renewenvironment{figure*}%
               {\@dblfloat{figure}}%
               {\end@dblfloat
               \addcontentsline{lof}{figure}%
                   {\protect\numberline{\thefigure}{\my@caption}}%
               }%
\makeatother

%\usepackage{hyperref}

\begin{document}
\listoffigures
\chapter{Testing}
\lipsum
\section{Hallo}
\begin{figure}[t]
\caption{First figure}
  Test
\end{figure}
\begin{figure}[b]
\caption{Second figure}
  Test
\end{figure}
\chapter{Hallo}
\lipsum
\section{Hallo}
\begin{figure}[t]
\caption{First figure}
  Test
\end{figure}
\begin{figure}[b]
\caption{Second figure}
  Test
\end{figure}
\end{document}

\makeatletter我大概了解了和之间的代码要点,\makeatother尽管我不明白该\long\def部分的作用。如果有人能帮我将章节标题添加到memoirlof,我将不胜感激。

memoir或代码均report不起作用hyperref,它会给出以下错误消息:

Package hyperref Warning: old lof file detected, not used; run LaTeX again.

[1{c:/texlive/2021/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] [2]
! Undefined control sequence.
<argument> ...umberline {\thefigure }{\my@caption 
                                                  }}{\thepage }{\@currentHre...
l.60 \end{figure}

如果有人能同时帮助我解决这个问题,我将不胜感激,尽管如果需要的话我也可以将其作为单独的问题提出。

答案1

在包含图表的章节中使用:

\addcontentsline{lof}{chapter}{\thechapter.\;~Testing}

之后 \chapter{Testing}等等。

更新

\chapterlof在任何\chapter{..}数字后使用。

d

一个简单的回忆录 MWEhyperref

\documentclass[oneside]{memoir}

\usepackage{lipsum} 
\usepackage{hyperref}

%**************************** added
\makeatletter
\def\printchaptertitle#1{\chaptitlefont #1 \gdef\thischaptertitle{#1}}%
\makeatother

\cftsetindents{figure}{1.5em}{2.3em} %indent

\newcommand{\chapterlof}{\addcontentsline{lof}{chapter}{\thechapter.\;~\thischaptertitle}}% add chapter to lof
%*****************************************
    
\begin{document}    

\listoffigures

\chapter{Testing}   
\chapterlof % add chapter to lof
\lipsum
\section{Hallo}
\begin{figure}[t]
    \caption{First figure}
    Test
\end{figure}
\begin{figure}[b]
    \caption{Second figure}
    Test
\end{figure}
\chapter{Hallo}
\chapterlof
\lipsum
\section{Hallo}
\begin{figure}[t]
    \caption{First figure}
    Test
\end{figure}
\begin{figure}[b]
    \caption{Second figure}
    Test
\end{figure}
\chapter{Bye}
\end{document}

答案2

我感谢 Simon Dispa 的回答,我注意到了你关于“更自动化的东西”的评论。以下是 Simon 的回答的一个版本,它会自动将章节添加到 LoF

% chapinlofprob.tex  603616 (A modified version of Simon Dispa's answer)

\documentclass[oneside]{memoir}

\usepackage{lipsum} 
\usepackage{hyperref}

%**************************** added 
\newcommand{\chapterlof}{\addcontentsline{lof}{chapter}{\thechapter.\;~\thischaptertitle}}% add chapter to lof

%%%% PW deleted
%\makeatletter
%\def\printchaptertitle#1{\chaptitlefont #1 \gdef\thischaptertitle{#1}}%
%\makeatother

\cftsetindents{figure}{1.5em}{2.3em} %indent

%*****************************************
    
\begin{document}    

\tableofcontents
\listoffigures

%%%% PW added here
\makeatletter
\def\printchaptertitle#1{\chaptitlefont #1 \gdef\thischaptertitle{#1}\chapterlof}%
\makeatother


\chapter{Testing}   
%\chapterlof % add chapter to lof PW deleted
\lipsum
\section{Hallo}
\begin{figure}[t]
    \caption{First figure}
    Test
\end{figure}
\begin{figure}[b]
    \caption{Second figure}
    Test
\end{figure}
\chapter{Hallo}
%\chapterlof % PW deleted
\lipsum
\section{Hallo}
\begin{figure}[t]
    \caption{First figure}
    Test
\end{figure}
\begin{figure}[b]
    \caption{Second figure}
    Test
\end{figure}
\chapter{Bye}
\end{document}

在此处输入图片描述

请注意,如果的定义\printchaptertitle位于之前,\listoffigures则可以将各种未编号的章节式标题添加到 LoF;这就是为什么我把它放在第一个编号章节之前。

相关内容