Add \addtocontents{toc}{\protect\setcounter{tocdepth}{-2}}
in the document body immediately before \begin{appendices}
. (And don't forget to load the appendix
package.)
\documentclass[12pt]{report}
\usepackage{lipsum}
\usepackage{tocloft}
\usepackage{appendix}
\newcommand{\listappendixname}{List of Appendices}
\newlistof{appendix}{app}{\listappendixname}
\setcounter{appdepth}{2}
\renewcommand{\theappendix}{\Alph{appendix}}
\renewcommand{\cftappendixpresnum}{Appendix\space}
\setlength{\cftbeforeappendixskip}{\baselineskip}
\setlength{\cftappendixnumwidth}{1in}
\newlistentry[appendix]{subappendix}{app}{1}
\renewcommand{\thesubappendix}{\theappendix.\arabic{subappendix}}
\renewcommand{\cftsubappendixpresnum}{Appendix\space}
\setlength{\cftsubappendixnumwidth}{1in}
\setlength{\cftsubappendixindent}{0em}
\renewcommand{\appendix}[1]{%
\refstepcounter{appendix}%
\chapter{\theappendix\space #1}%
\addcontentsline{app}{appendix}{\protect\numberline{\theappendix}#1}%
\par
}
\newcommand{\subappendix}[1]{%
\refstepcounter{subappendix}%
\section{\thesubappendix\space #1}%sub
\addcontentsline{app}{subappendix}{\protect\numberline{\thesubappendix}#1}%
}
\usepackage{fmtcount,etoolbox}
\makeatletter
\patchcmd{\@makechapterhead}{\thechapter}{\Numberstring{chapter}}{}{}
\patchcmd{\chaptermark}{\thechapter}{\NUMBERstring{chapter}}{}{}
\makeatother
\newcommand{\thetocchap}{\NUMBERstring{chapter}}
\begin{document}
\tableofcontents
\listofappendix
\chapter{Foo} \lipsum[1]
\section{Bar} \lipsum[2]%sub
\chapter{Additional Foo} \lipsum[3]
\section{Additional Bar} \lipsum[4]%sub
\addtocontents{toc}{\protect\setcounter{tocdepth}{-2}}
\begin{appendices}
\appendix{Baz} \lipsum[5]
\subappendix{Qux} \lipsum[6]
\appendix{Additional Baz} \lipsum[7]
\subappendix{Additional Qux} \lipsum[8]
\end{appendices}
\end{document}
Here is another approach. What it does is to check at the end of the document the values of the figure
and table
counters, and add to the .aux
file a boolean flag setting depending on whether these values are zero or positive.
Then you have on next run \iffigures
and \iftables
which allow you to act conditionally.
In the code below, perhaps the \global
are not really needed, I didn't check.
See also a variant at bottom which does not use the figure
/table
counters because they might well be reset to zero due to document sectioning (as pointed out by egreg
in a comment).
\documentclass[10pt,twocolumn]{article}
\usepackage{lipsum}
\usepackage[margin=0.75in]{geometry}
\usepackage{float}
\floatstyle{boxed}
\restylefloat{figure}
\restylefloat{table}
\newif\iffigures
\newif\iftables
\makeatletter
\AtEndDocument {%
\if@filesw
\ifnum\value{figure}=\z@ % no figures
\immediate\write\@mainaux {\global\string\figuresfalse}%
\else
\immediate\write\@mainaux {\global\string\figurestrue}%
\fi
\ifnum\value{table}=\z@ % no tables
\immediate\write\@mainaux {\global\string\tablesfalse}%
\else
\immediate\write\@mainaux {\global\string\tablestrue}%
\fi
\fi
}
\makeatother
% for the purpose of testing
% this will make a MWE without tables
\long\def\IGNORE #1\ENDIGNORE{}
% uncomment to make a MWE with tables
% \let\IGNORE\empty
% \let\ENDIGNORE\empty
\begin{document}
\tableofcontents
%
\iffigures
\addcontentsline{toc}{section}{List of Figures}
\listoffigures
\fi
%
\iftables
\addcontentsline{toc}{section}{List of Table}
\listoftables
\fi
\section{First section}
\lipsum[\inputlineno]
\begin{figure}[H]\centering
\LaTeX\LaTeX
\caption{my figure}
\end{figure}
\lipsum[\inputlineno]
\begin{figure}[H]\centering
\LaTeX\TeX
\caption{another figure}
\end{figure}
\section{Second section}
\lipsum[\inputlineno]
\IGNORE
\begin{table}[H]\centering
\TeX\LaTeX
\caption{my table}
\end{table}
\ENDIGNORE
\lipsum[\inputlineno]
\IGNORE
\begin{table}[H]\centering
\TeX\TeX
\caption{another table}
\end{table}
\ENDIGNORE
\lipsum[\inputlineno]
\end{document}
Here is for a document with figures but no tables:
And if tables are present:
Three compilations needed.
Variant. I don't know to what extent patching \figure
and \table
as here is OK, depends perhaps on float related packages. At the worst I guess doing the patches immediately after \begin{document}
should be enough (at the end of preamble might not be enough if some package does stuff during At Begin Document).
\documentclass[10pt,twocolumn]{article}
\usepackage{lipsum}
\usepackage[margin=0.75in]{geometry}
\usepackage{float}
\floatstyle{boxed}
\restylefloat{figure}
\restylefloat{table}
\newif\iffigures
\newif\iftables
\makeatletter
\let\OLDfigure\figure
\def\figure {\figures@in@document\OLDfigure }
\let\OLDtable\table
\def\table {\tables@in@document\OLDtable }
\def\figures@in@document {%
\immediate\write\@mainaux {\global\string\figurestrue}%
\global\let\figures@in@document\empty
}
\def\tables@in@document {%
\immediate\write\@mainaux {\global\string\tablestrue}%
\global\let\tables@in@document\empty
}
\makeatother
% for the purpose of testing
% this will make a MWE without tables
\long\def\IGNORE #1\ENDIGNORE{}
% uncomment to make a MWE with tables
%\let\IGNORE\empty
%\let\ENDIGNORE\empty
\begin{document}
\tableofcontents
%
\iffigures
\addcontentsline{toc}{section}{List of Figures}
\listoffigures
\fi
%
\iftables
\addcontentsline{toc}{section}{List of Table}
\listoftables
\fi
\section{First section}
\lipsum[\inputlineno]
\begin{figure}[H]\centering
\LaTeX\LaTeX
\caption{my figure}
\end{figure}
\lipsum[\inputlineno]
\begin{figure}[H]\centering
\LaTeX\TeX
\caption{another figure}
\end{figure}
\section{Second section}
\lipsum[\inputlineno]
\IGNORE
\begin{table}[H]\centering
\TeX\LaTeX
\caption{my table}
\end{table}
\ENDIGNORE
\lipsum[\inputlineno]
\IGNORE
\begin{table}[H]\centering
\TeX\TeX
\caption{another table}
\end{table}
\ENDIGNORE
\lipsum[\inputlineno]
\end{document}
Best Answer
The following minimal example works for me in terms of the
book
document class:Regarding your list of questions:
I've inserted the
definition
entries to be typefigure
rather usingThat way they are formatted similarly, avoiding any overlap. If you have more definitions and still overlap, you need to change the width of the column.
My numbering works. You could also use
\arabic{chapter}.\thedefinition
or even\arabic{chapter}.\arabic{definition}
which should strip any inherited counters attached to\thechapter
or\thedefinition
.Solved via (1.) above.
I've also used the
etoolbox
package to add a vertical space between the chapter-separated definitions, similar to that of the LoF and LoT. This was done using\preto\chapter{<stuff>}
which adds<stuff>
before\chapter
. Here stuff is\addvspace{10\p@}
which adds a maximum of10\p@
(10pt) vertically.