Ende 2016 veröffentlichte die ACM ihreACM-Masterartikelvorlage 2017. Diese Dokumentklasse beschädigt eine Menge LaTeX-Code, der möglicherweise mit früheren ACM-Dokumentklassen geschrieben wurde, insbesondere der sig-alternate
Klasse.
Insbesondere hatte ich Probleme mit der Beschriftung von Tabellen und der Verwendung von Unterabbildungen (mit oder ohne Beschriftung) mit der neuen Klasse.Bedienungsanleitungsagt nichts darüber, insbesondere nicht im Abschnitt 2.5, der sich mit Abbildungen und Tabellen befasst.
Anstatt nach etwas Bestimmtem zu fragen, das bei mir nicht funktioniert hat, würde ich gern die allgemeine, idiomatische, wenn Sie so wollen, Herangehensweise an dieses Problem erfahren:
- Welche Paketkombination(en) sollen mit der Klasse (
subfigure
,subcaption
,subfig
,floatrow
usw.) verwendet werden? - Gibt es eine spezielle Initialisierung,
\patchcmd
ein ing oder einen anderen Voodoo-Zauberspruch, den ich in meine Präambel aufnehmen sollte? - Gibt es bestimmte Abbildungs-/Unterabbildungslayouts, die ich vermeiden oder bei denen ich vorsichtig sein sollte? Das Gleiche gilt für Untertitel.
Antwort1
Um Boris' Antwort zu erweitern: Hier ist, wie Sie mit vorgehen können (und sollten) subcaption
. Anstelle von \autoref
ist es meiner Meinung nach besser, \cref
from zu verwenden \cleveref
.
\documentclass[sigconf]{acmart}
%---------------------------------------------------------------
% You don't need this block of lines in your article - I do
% need, them since I use placeholders instead of actual graphics
\usepackage{tcolorbox} % for graphics placeholders
\newcommand{\graphicsplaceholder}[2]{%
\begin{tcolorbox}[valign=center,width=#1,height=#2,arc=0.5mm,auto outer arc]%
\centering \sf missing graphic%
\end{tcolorbox}%
}
%---------------------------------------------------------------
\usepackage{subcaption}
\usepackage{cleveref}
\crefname{figure}{Figure}{Figures}
\begin{document}
\title{Tables, figures and subfigures \texorpdfstring{\\}{}
with the new ACM 2017 article template}
\author{Nobody in particular}
\affiliation{\institution{University of Life}}
\email{[email protected]}
\maketitle
\begin{abstract}
The quick brown fox jumps over the lazy dog.
\end{abstract}
\section{Figures}
Let's start with a simple figure, single-column, no subfigures --- using a
\texttt{figure} environment. That will be \cref{figure-with-no-subfigs}.
\begin{figure}[htpb]
\centering
% What you would typically have here is something like:
% \includegraphics[width=\columnwidth]{some-file.pdf}
% but for this example, let's go with a placeholder instead:
\graphicsplaceholder{8cm}{1cm}
\caption{This is a figure with no subfigures}
\label{figure-with-no-subfigs}
\end{figure}
\subsection{Figures with subfigures}
Let's add a figure with two subfigures; the subfigures will be added with
\verb|\subcaptionbox{caption goes here}|, so they should also be captioned.
That will be \cref{first-figure-with-subfigures}.
\begin{figure}[htpb]
\centering
\subcaptionbox{Some subfigure\label{first-subfig}}{%
% What you would typically have here is something like:
% \includegraphics[width=0.2\textwidth]{some-file.pdf}
% but for this example, let's go with a placeholder instead:
\graphicsplaceholder{4cm}{1cm}%
}
\subcaptionbox{Another subfigure\label{second-subfig}}{%
\graphicsplaceholder{4cm}{1cm}%
}
\caption{A caption for the single-column figure with two subfigures}
\label{first-figure-with-subfigures}
\end{figure}
Let's conclude this section by repeating the same figure, but now as a
two-column figure, i.e. using the \verb|{figure*}| environment. That will
be \cref{a-two-column-figure}, with \cref{first-subfig} and \cref{second-subfig}.
\begin{figure*}[htpb]
\centering
\subcaptionbox{Yet another caption\label{third-subfig}}{%
\graphicsplaceholder{8cm}{1cm}%
}
\subcaptionbox{This is getting old\label{fourth-subfig}}{%
\graphicsplaceholder{8cm}{1cm}%
}
\caption{A caption for the two-column figure (also with two subfigures)}
\label{a-two-column-figure}
\end{figure*}
\section{Tables}
Let's add a \texttt{table} environment, with a caption near the end of it
(after the \texttt{tabular} environment). That will be \cref{first-table}.
\begin{table}[thpb]
\begin{tabular}{ c c c }
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9 \\
\end{tabular}
\caption{This is a caption for a \texttt{table} float, with a
\texttt{tabular} environment inside it}
\label{first-table}
\end{table}
And we're all done, except for one last thing...:
\paragraph{Warning} Don't ever define a \verb|\tblname| command. This was
possible with older ACM document class (e.g. \texttt{sig-alternate} v2.8),
but now it will trigger errors when you try to caption your floats.
\end{document}
Antwort2
Abschnitt 2.12 des Benutzerhandbuchs empfiehlt subcaption
das Paket „für komplexe Abbildungen mit mehreren Nebenhandlungen oder Unterabbildungen, die separate Untertitel erfordern.“
Antwort3
Ok, das Folgende funktioniert. Feedback in Kommentaren bezüglich der Auswahl der Pakete oder anderer Dinge ist willkommen.
\documentclass[sigconf]{acmart}
%---------------------------------------------------------------
% You don't need this block of lines in your article - I do
% need them, since I use placeholders instead of actual graphics
\usepackage{tcolorbox} % for graphics placeholders
\newcommand{\graphicsplaceholder}[2]{%
\begin{tcolorbox}[valign=center,width=#1,height=#2,arc=0.5mm,auto outer arc]%
\centering%
\sf missing graphic%
\end{tcolorbox}%
}
%---------------------------------------------------------------
\usepackage{float}
\usepackage{subfig}
\begin{document}
\title{Tables, figures and subfigures \\ with the new ACM 2017 article template}
\author{Nobody in particular}
\affiliation{ \institution{University of Life} }
\email{[email protected]}
\maketitle
\begin{abstract}
The quick brown fox jumps over the lazy dog.
\end{abstract}
\section{Figures}
Let's start with a simple figure, single-column, no subfigures --- using a
\texttt{figure} environment. That will be \autoref{figure-with-no-subfigs}.
\begin{figure}[htpb]
\centering
% What you would typically have here is something like:
% \includegraphics[width=\columnwidth]{some-file.pdf}
% but for this example, let's go with a placeholder instead:
\graphicsplaceholder{8cm}{1cm}
\caption{This is a figure with no subfigures}
\label{figure-with-no-subfigs}
\end{figure}
\subsection{Figures with subfigures}
Le'ts add a figure with two subfigures; the subfigures will be added using
\verb|\subfloat[caption goes here]|, so they should also be captioned.
That will be \autoref{first-figure-with-subfigures}.
\begin{figure}[htpb]
\centering
\subfloat[Some subfigure]{
\graphicsplaceholder{4cm}{1cm}
\label{first-subfig}
}
\subfloat[Another subfigure]{
\graphicsplaceholder{4cm}{1cm}
\label{second-subfig}
}
\caption{A caption for the single-column figure with two subfigures}
\label{first-figure-with-subfigures}
\end{figure}
Let's conclude this section by repeating the same figure, but now as a two-column
figure, i.e. using the \verb|{figure*}| environment. That will be
\autoref{a-two-column-figure}.
\begin{figure*}[htpb]
\centering
\subfloat[Yet another caption]{
\graphicsplaceholder{8cm}{1cm}
\label{third-subfig}
}
\subfloat[This is getting old]{
\graphicsplaceholder{8cm}{1cm}
\label{fourth-subfig}
}
\caption{A caption for the two-column figure (also with two subfigures)}
\label{a-two-column-figure}
\end{figure*}
\section{Tables}
Let's add a \texttt{table} environment, with a caption near the end of it (after
the \texttt{tabular} environment). That will be \autoref{first-table}.
\begin{table}[thpb]
\begin{tabular}{ c c c }
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9 \\
\end{tabular}
\caption{This is a caption for a \texttt{table} float, with a \texttt{tabular}
environment inside it}
\label{first-table}
\end{table}
And we're all done, except for one last thing...:
\paragraph{Warning} Don't ever define a \verb|\tblname| command. This was
possible with older ACM document class (e.g. \texttt{sig-alternate} v2.8),
but now it will trigger errors when you try to caption your floats.
\end{document}
Und wenn ich dies mit TeXLive 2015.20160320-1 (der von der Distribution bereitgestellten Version unter Linux Mint 18.1) kompiliere, erhalte ich zwei Seiten:
Anmerkungen:
- Der Grund, warum ich es nicht verwende
subcaption
, ist, dass es dem ähnelt, was ich bei älteren ACM-Klassen verwendet habe, und ich habe mich für minimale Änderungen entschieden, damit alles funktioniert (aber Sie dürfen gerne Kritik üben). - Ich weiß nicht, warum ich den Block bekomme, der mit „ACM Reference Format“ beginnt. Ist das mit Absicht so? Es ist wirklich anstrengend für die Augen und nervig.
- Ich bin nicht sicher, wie ich die Spalten jetzt ausgleichen soll (in diesem Beispiel geht es jedoch nicht um den Spaltenausgleich).
- Es gibt keine Seitennummerierung – wahrscheinlich, weil diese Dinge in die PDF-Dokumente mit den Tagungsbänden aufgenommen werden, deren laufende Nummerierung sich über viele Artikel erstreckt.
- Ich bin mir nicht ganz sicher, warum die
figure*
Umgebung die Seite leert. Sollte der Text nicht einfach die beiden Spalten davor füllen und die Abbildung danach kommen? Hmm.