Abbildungs- und Tabellenverzeichnis

Abbildungs- und Tabellenverzeichnis

Ich bin mir bewusst, dassKombiniertes Abbildungs- und Tabellenverzeichnis?, aber der Fragesteller verlangteinsNummerierungsschema für Abbildungen und Tabellen, das ich nicht möchte. Leider scheint die Antwort von dieser Voraussetzung abzuhängen.

Meine Frage betrifft ein beabsichtigtes Ergebnis/Output wie:


Abbildungs- und Tabellenverzeichnis

Abbildung 1: Karte der Bäume in New Orleans .................................... 3

Abbildung 2: Anzahl der Blätter fallen Blätter pro Tag .................... 5

Tabelle 1: Baumarten ...................................................... 12

Abbildung 3: Luftqualitätsminderung pro 1000 gefallenen Blättern ...................................... ...


Damit dies funktioniert, ist das Umdefinieren von Abbildungen in Tabellen (oder umgekehrt), wie im obigen Link vorgeschlagen (also etwa wie \let\figure\table\let\endtable\endfigure), nicht möglich, da dies natürlich dazu führt, dass alle Abbildungen ebenfalls „Tabelle x“ heißen …

Antwort1

Das funktioniert. Der Code ist gut kommentiert, daher denke ich, dass keine weiteren Kommentare nötig sind.

Bildbeschreibung hier eingeben

\documentclass{article}

% To make the page shorter
\pagestyle{empty}
\textheight3in

% CODE STARTS HERE
% Based on `tocloft` package
\usepackage[titles]{tocloft}
\newlistof{figtab}{loft}{List of Figures and Tables}
\makeatletter
% Change the file extension of both lot and lof
\def\ext@figure{loft}
\def\ext@table{loft}
% Store the original `\thefigure` and `\thetable`
\let\tohe@thefigure\thefigure
\let\tohe@thetable\thetable
% Redefine them to contain a "dummy" `\tohe@list...`
\def\thefigure{\tohe@listfig\tohe@thefigure}
\def\thetable{\tohe@listtab\tohe@thetable}
% Make the two dummy commands truly dummy
\let\tohe@listfig\relax
\let\tohe@listtab\relax
% Store the original `\listoffigtab`
\let\tohe@listoffigtab\listoffigtab
% Redefine it in such a way that the dummy commands insert "Fig." or "Tab." respectively
\def\listoffigtab{%
  \begingroup
  \def\tohe@listfig{Fig.~}
  \def\tohe@listtab{Tab.~}
  \tohe@listoffigtab
  \endgroup  
}
% Change \listoffigtab spacing
\setlength{\cftfignumwidth}{5em}
\setlength{\cfttabnumwidth}{5em}
\setlength{\cftfigindent}{0pt}
\setlength{\cfttabindent}{0pt}
\makeatother
% CODE ENDS HERE

\begin{document}

\listoffigtab

% !b just to make the floats appear on the bottom of the first page
\begin{figure}[!b]
\caption{First}
\end{figure}

\begin{table}[!b]
\caption{Little Table}
\end{table}

\begin{figure}[!b]
\caption{Second}
\end{figure}

\end{document}

Antwort2

Der entsprechende Befehl lautet wie immer: \addcontentsline.

figureund tableUntertitel werden in eine Datei geschrieben, deren Erweiterung in \ext@figureoder gespeichert ist \ext@table.

Im \@caption(genauer gesagt internen Prozessormakro) finden wir:

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

Der erste Parameter \@captionist der Name des Floats, also figureoder table(normalerweise). Dies kann verwendet und gepatcht werden, indem die tableBeschriftungen erfasst und redirectin die Datei mit der Erweiterung eingefügt werden \ext@figure.

\documentclass{book}

\usepackage{caption}
\usepackage{xstring}
\usepackage{xpatch}

\makeatletter
\xpatchcmd{\@caption}{%
  \addcontentsline{\csname ext@#1\endcsname}{#1}%
  {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}%
}{%
  \IfStrEq{#1}{table}{% Filter `table` out
    \addcontentsline{\csname ext@figure\endcsname}{table}%
    {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}%
  }{%
    \addcontentsline{\csname ext@#1\endcsname}{#1}%
    {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}%
  }%
}{\typeout{Patch success}}{}
\makeatother

\renewcommand{\listfigurename}{List of Figures and Tables}

\begin{document}
\listoffigures
\begin{figure}
\caption{first figure}
\end{figure}

\begin{figure}
\caption{Another first figure}
\end{figure}


\begin{table}
\caption{first table}
\end{table}

\chapter{Another chapter}
\begin{table}
\caption{Yet another table}
\end{table}

\end{document}

Bildbeschreibung hier eingeben

Kleines Update nachdem yo'richtig aufgefallen ist, dass unklar ist, ob es sich im LOFT um eine Tabelle oder Figur handelt:

\documentclass{book}

\usepackage{caption}
\usepackage{xstring}
\usepackage{tocloft}
\usepackage{xpatch}

\addtolength{\cftfignumwidth}{30pt}
\addtolength{\cfttabnumwidth}{30pt}
% Prepend the tab or fig number with a `\makebox` (for equal width) and put `Tab.` or `Fig.` in there. Change the names at will 
\renewcommand{\cfttabpresnum}{\makebox[30pt][l]{Tab.}}  
\renewcommand{\cftfigpresnum}{\makebox[30pt][l]{Fig.}}  


\makeatletter
\xpatchcmd{\@caption}{%
  \addcontentsline{\csname ext@#1\endcsname}{#1}%
  {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}%
}{%
  \IfStrEq{#1}{table}{%
    \addcontentsline{\csname ext@figure\endcsname}{table}%
    {\protect\numberline{\csname the#1\endcsname\hfill\hspace{1em}}{\ignorespaces #2}}%
  }{%
    \IfStrEq{#1}{figure}{%
      \addcontentsline{\csname ext@#1\endcsname}{#1}%
      {\protect\numberline{\csname the#1\endcsname\hfill\hspace{1em}}{\ignorespaces #2}}%
    }{%
     \addcontentsline{\csname ext@#1\endcsname}{#1}%
     {\protect\numberline{\csname the#1\endcsname}{ \ignorespaces #2}}%
    }
  }%
}{\typeout{Patch success}}{}
\makeatother

\renewcommand{\listfigurename}{List of Figures and Tables}

\begin{document}
\listoffigures
\begin{figure}
\caption{first figure}
\end{figure}

\begin{figure}
\caption{Another first figure}
\end{figure}


\begin{table}
\caption{first table}
\end{table}

\chapter{Another chapter}
\begin{table}
\caption{Yet another table}
\end{table}

\section{First section}
\subsection{First subsection}
\subsubsection{First subsubsection}
\begin{table}
\caption{Yet another another table}
\end{table}


\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen