listoffigures 能改用长标题吗?

listoffigures 能改用长标题吗?

在我的整个文档中,我都有带标题的图表,如下例所示:

\caption[Surface elevation change for Antarctica and Greenland]{Rate of change of surface elevation for Antarctica and Greenland over the period 2003-2007. Source: \citet{pritchard:09}.}

我的问题是我想将图表列表中的短标题改为长标题。有没有办法做到这一点而\listoffigures不必更改每个图表\caption

我的缩短工作文件:

\documentclass[12pt,twoside]{report} 
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\pagestyle{headings} 
\usepackage[top=3.4cm,left=2.2cm,right=3.5cm,bottom=3.0cm]{geometry}     
\geometry{a4paper} 

\usepackage[parfill]{parskip} 
\usepackage{natbib} 
\renewcommand\bibname{Reference List}

\usepackage{graphicx}
\usepackage{rotating} 
\usepackage[section]{placeins}
\usepackage[compact]{titlesec}


\titleformat{\chapter}[display]
{\normalfont\huge\bfseries}{\chaptertitlename\ \thechapter}{20pt}{\Huge}


\renewcommand{\topfraction}{.85}
\renewcommand{\bottomfraction}{.7}
\renewcommand{\textfraction}{.15}
\renewcommand{\floatpagefraction}{.66}
\renewcommand{\dbltopfraction}{.66}
\renewcommand{\dblfloatpagefraction}{.66}

\usepackage{amssymb} 
\usepackage{epstopdf} 
\usepackage{rotating}


\usepackage{setspace}
\usepackage{fixltx2e}
\usepackage{multirow}
\usepackage{tocloft}
\usepackage{longtable}

\renewcommand\contentsname{Contents}
\renewcommand\cftpartpresnum{PART }

\usepackage[pdftex,bookmarks=true,hidelinks,bookmarksopen=true]{hyperref}

\usepackage{lscape} \linespread{1.6} \DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png}


\setlength{\belowcaptionskip}{18pt} % space below table caption

\begin{document}
\newgeometry{top=3.4cm,left=3.5cm,right=2cm,bottom=3.0cm}
\include{./title/1_tex/title}
\restoregeometry
\newpage
\thispagestyle{empty}
\mbox{}
\pagenumbering{roman} \setcounter{page}{1}
\include{./declaration/1_tex/declarations}

\begin{spacing}{1.1}

\tableofcontents
\newpage
\phantomsection \label{listoffig}
\addcontentsline{toc}{chapter}{List of Figures}
\listoffigures

\newpage
\phantomsection \label{listoftab}
\addcontentsline{toc}{chapter}{List of Tables}
\listoftables
\end{spacing} 

\bibliographystyle{copernicus}
\newpage
\newgeometry{top=3.4cm,left=3.5cm,right=2cm,bottom=3.0cm}
\titlespacing{\chapter}{0pt}{-10mm}{40pt}   
\setlength{\parindent}{25pt}
\begin{spacing}{1.5}
\pagenumbering{arabic} \setcounter{page}{1}
\include{./chapter1/1_tex/chapter1}
...

\end{document}

答案1

您可以在序言末尾添加以下内容来“恢复”可选参数的存在:

\let\origcaption\caption
\renewcommand\caption[2][]{\origcaption{#2}}

答案2

caption软件包确实提供了用于此目的的选项list-entry=heading,至少从 v3.3 开始:

\documentclass[12pt,twoside]{report}
\usepackage[list-entry=heading]{caption}
\usepackage[demo]{graphicx}
\begin{document}
\listoffigures
\begin{figure}
\includegraphics{test}
\caption[Short caption text]{Full caption text}
\end{figure}
\end{document}

有关详细信息,请参阅endfloat包文档的“8.4.1 删除标题”部分。

在此处输入图片描述

答案3

这在很大程度上取决于您使用的类以及是否使用任何字幕格式化包,而您尚未显示这些内容。请总是发布一个完整的说明问题的小文档,其中显示了所使用的相关软件包。

如果您使用标准类,那么这会将 toc 更改为使用#3(主要参数)而不是#2(可选参数)。

\makeatletter
\long\def\@caption#1[#2]#3{%
  \par
  \addcontentsline{\csname ext@#1\endcsname}{#1}%
    %%%%%%{\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}%
    {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #3}}%
  \begingroup
    \@parboxrestore
    \if@minipage
      \@setminipage
    \fi
    \normalsize
    \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
  \endgroup}
\makeatother

相关内容