文件结尾.lof为\endinput

文件结尾.lof为\endinput

似乎什么都没起作用。

我尝试将 * 添加到\caption。我尝试将 * 添加\captionsetup{list=no}到条目前的序言中\appendix

我在用着\usepackage{caption}

有任何想法吗?

答案1

文件结尾.lof\endinput

.lof一个技巧是通过 来结束文件。这样当文件位于图片列表中时, \endinputTeX 将不会读取 之后的行:\endinput\input

\documentclass{article}

\makeatletter
\g@addto@macro\appendix{%
  \if@filesw % \nofiles is not active
    \immediate\write\@auxout{%
      \string\@writefile{lof}{\string\endinput}%
    }%
  \fi
}%
\makeatother

\begin{document}
  \listoffigures
  \begin{figure}
    \caption{First figure caption}
  \end{figure}
\newpage
\appendix
  \begin{figure}
    \caption{Figure caption not in list of figures}
  \end{figure}
\end{document}

然后.lof文件包含:

\contentsline {figure}{\numberline {1}{\ignorespaces First figure caption}}{1}
\endinput 
\contentsline {figure}{\numberline {2}{\ignorespaces Figure caption not in list of figures}}{2}

并且仅显示第一个条目。

禁用\addtocontents文件.lof\appendix

如果内容是要放入图形列表中,则以下示例将重新定义\addtocontents为不执行任何操作:\appendix

\documentclass{article}

\makeatletter
\g@addto@macro\appendix{%
  \newcommand*{\SavedAddToContents}{}%
  \let\SavedAddToContents\addtocontents
  \renewcommand*{\addtocontents}[1]{%
    \def\atc@next{\SavedAddToContents{#1}}%
    \edef\atc@handle{#1}%
    \def\atc@lof{lof}%
    \ifx\atc@lof\atc@handle
      \let\atc@next\@gobble
    \fi
    \atc@next
  }%
}%
\makeatother

\begin{document}
  \listoffigures
  \begin{figure}
    \caption{First figure caption}
  \end{figure}
  \appendix
  \begin{figure}
    \caption{Figure caption not in list of figures}
  \end{figure}
\end{document}

.lof文件包含:

\contentsline {figure}{\numberline {1}{\ignorespaces First figure caption}}{1}

list=no包装选项caption

至少对于简单的示例文件,list=no如果添加到,选项设置是有效的\appendix

\documentclass{article}
\usepackage{caption}

\makeatletter
\g@addto@macro\appendix{%
  \captionsetup{list=no}%
}%
\makeatother

\begin{document}
  \listoffigures
  \begin{figure}
    \caption{First figure caption}
  \end{figure}
  \appendix
  \begin{figure}
    \caption{Figure caption not in list of figures}
  \end{figure}
\end{document}

文件.lof仅包含第一个图形标题:

\contentsline {figure}{\numberline {1}{\ignorespaces First figure caption\relax }}{1}

使用包手动禁用列表条目caption

此外,通过为图形列表指定空标题的手动方法也适用于此:

\documentclass{article}
\usepackage{caption}

\begin{document}
  \listoffigures
  \begin{figure}
    \caption{First figure caption}
  \end{figure}
  \appendix
  \begin{figure}
    \caption[]{Figure caption not in list of figures}
  \end{figure}
\end{document}

相关内容