Idiomatischer Ansatz für beschriftete Unterabbildungen und Tabellen mit der Acmart-Klasse 2017?

Idiomatischer Ansatz für beschriftete Unterabbildungen und Tabellen mit der Acmart-Klasse 2017?

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-alternateKlasse.

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, floatrowusw.) verwendet werden?
  • Gibt es eine spezielle Initialisierung, \patchcmdein 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 \autorefist es meiner Meinung nach besser, \creffrom 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}

Bildbeschreibung hier eingeben

Antwort2

Abschnitt 2.12 des Benutzerhandbuchs empfiehlt subcaptiondas 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:

Seite 1 von 2 der Ausgabe Seite 2 von 2 der Ausgabe

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.

verwandte Informationen