0

I would like to know if it exists a way to include a table (or figure) in a section and display it in the appendix, in the following example:

\section{section}
stupid text where I speak about a table printed in the appendix

\begin{table}[APPENDIX]
\input{\folder/table.tex}
\end{table}

Here I continue my article and then comes something like:

\section{Appendix}
here should be my table

In this way I will have my tables and figure in the related section and they will be displayed only if I "print the section". They will also appear in the order of inclusion...

TeYaP
  • 142
  • 1
    You could have a look at package endfloat. – Johannes_B May 08 '18 at 10:51
  • You could store it as a macro and expand it in the appendix. Where you expand it determines the caption number. – John Kormylo May 08 '18 at 13:20
  • One commonly used trick is to create an elaboarate label (see https://tex.stackexchange.com/questions/301320/cite-a-theorem-by-its-name-and-number/301421?s=5|12.9697#301421) and use \ref to print it. For example, pgfplots can put the legend into a label. OTOH, this would require things like \string\begin{table}. – John Kormylo May 08 '18 at 13:28
  • @JohnKormylo Do you an example of macro which can be expanded it in the appendix? – TeYaP May 09 '18 at 19:54

1 Answers1

0

This shows how to create a macro and a savebox for later use. Note that the savebox increments the table counter immediately.

This is a demonstration, not a solution.

\documentclass{article}
\usepackage{caption}

\newsavebox{\appboxB}

\begin{document}
\section{Test}

Example text.

\newcommand{\appendA}{%
\begin{table}[htp]
\caption{Macro}
\end{table}%
}

\savebox{\appboxB}{%
\begin{minipage}{\columnwidth}
\captionof{table}{Savebox}
\end{minipage}%
}

\appendix
\section{Here}
\appendA
\begin{table}[htp]
\usebox{\appboxB}
\end{table}
\end{document}

This is a solution. It saves a list of global macros to be expanded in the appendix. \appendset saves the float, and \appendlist expands all of them.

\documentclass{article}

\newcounter{appendix}
\newcommand{\appendset}[1]% #1 = float to be expanded later
{\stepcounter{appendix}%
  \expandafter\gdef\csname append\theappendix\endcsname{#1}%
}
\newcommand{\appendlist}% expand previously saved floats
{\bgroup
  \count1=0
  \loop\ifnum\count1<\value{appendix}\relax
    \advance\count1 by 1
    \csname append\the\count1\endcsname
  \repeat
\egroup}

\begin{document}
\section{Test}

Example text.

\appendset{%
\begin{table}[htp]
\caption{First}
\end{table}%
}
\appendset{%
\begin{table}[htp]
\caption{Second}
\end{table}%
}

\appendix
\section{Floats}
\appendlist
\end{document}

With the exception of requiring a \clearpage at the start, one can do the same thing using the endfloat package.

\documentclass{article}
\usepackage[nolists,noheads,nomarkers]{endfloat}
\renewcommand{\efloatseparator}{\null}

\begin{document}
\section{Test}

Example text.

\begin{table}[htp]
\caption{First}
\end{table}

\begin{table}[htp]
\caption{Second}
\end{table}

\appendix
\section{Floats}
\clearpage% required
\processdelayedfloats

\section{Optional}
\end{document}
John Kormylo
  • 79,712
  • 3
  • 50
  • 120
  • It is an interesting solution. Unfortunately it does not work as I would like.
    I have 2 problems with your answer: 1 - once printed table"appboxB" is numerated 1 while table"appendA" has the number 2. I would like them to have their number of appearance. 2 - this solution forces me to print manually the tables and figures in the appendix, which is exactly what I do not want to do. I want them to be printed automatically (only for some chosen graph) in the good order.
    – TeYaP May 10 '18 at 08:43
  • Showing the difference between macros and saveboxes was the point of the demonstration. – John Kormylo May 10 '18 at 13:46