我想写一个扩展的图形标题部分,并想知道是否可以让 LaTeX 为我完成大部分艰苦的工作。
理想情况下,它可以采用函数的形式,比如说\extcaption
,我们可以在浮点数中使用,例如
\begin{figure}
\includegraphics{example-image-a.pdf}
\caption{Important things.}
\extcaption{Less important things.}
\label{fig:bigA}
\end{figure}
我们可以用
\printextcaptions
那将会返回
图 1.1,第 2 页:不太重要的事情。
无论如何都要这么做?以下是 MWE:
\documentclass[a4paper,10pt]{report}
\usepackage{fontspec}
\usepackage{graphicx}
\usepackage[titles]{tocloft}
\begin{document}
\chapter{A chapter}
\section{A section}
\begin{figure}
\includegraphics{example-image-a.pdf}
\caption{Picture of a big A}
%\extcaption{This picture is magnificent}
\label{fig:bigA}
\end{figure}
\begin{figure}
\includegraphics{example-image-b.pdf}
\caption[This picture is horrible]{Picture of a big B}
%\extcaption{This picture is horrible.}
\label{fig:bigB}
\end{figure}
%\printextcaptions
\end{document}
我得到的最好结果是使用tocloft
包设置一个新列表
\newlistof[section]{extfig}{efc}{Extended figure captions}
\newcommand{\extcaption}[1]{%
\refstepcounter{extfig}
\par\noindent\textbf{\theextfig #1}
\addcontentsline{efc}{extfig}{\protect\numberline{\theextfig}#1}\par}
\renewcommand{\theextfig}{}
但是这会打印一个新的章节,而我什么都不想要,它不会按照我想要的格式打印扩展标题,也不会读取图形(或表格)浮点数的标签,所以我必须手动设置所有内容。
答案1
以下将类似 ToC 的条目写入新.efc
文件并使用 读取\printextcaptions
:
\documentclass{report}
\usepackage{graphicx,lipsum}
\newcommand{\extcaption}[1]{% Write to .efc file
\addcontentsline{efc}{extfig}{\thefigure, page~\thepage: #1}}
\makeatletter
\newcommand{\printextcaptions}{\@starttoc{efc}}% Read .efc file
\newcommand{\l@extfig}[2]{\noindent #1\par}% How each .efc entry is handled
\makeatother
\begin{document}
\sloppy% Just for this example
\chapter{A chapter}
\section{A section}
\printextcaptions
\lipsum[1-50]
\begin{figure}[ht]
\includegraphics{example-image-a}
\caption{Picture of a big A}
\extcaption{This picture is magnificent}
\end{figure}
\lipsum[1-50]\lipsum[1-50]
\begin{figure}[ht]
\includegraphics{example-image-b}
\caption[This picture is horrible]{Picture of a big B}
\extcaption{This picture is horrible}
\end{figure}
\end{document}