0

Following the answer of David Carlisle on list of figures and tables when there are no figures or tables?

\documentclass[10pt,twocolumn]{article}
\usepackage{lipsum}

\def\wheninteresting#1{%
\setbox0\vbox{#1}%
\ifdim\ht0>35pt
\unvbox0
\fi}

\begin{document}
\tableofcontents

\wheninteresting{
\addcontentsline{toc}{section}{List of Figures}
\listoffigures
}

\wheninteresting{
\addcontentsline{toc}{section}{List of Table}
\listoftables
}

\section{First section}
...

In my document, I have before each list something like \pdfbookmark[0]{\lstlistlistingname}{lol} and while using his answer, the list is correctly hidden from the Table of Contents and from my document when it is empty. However, it still being added to the PDF bookmarks items list.

Why \addcontentsline{toc} works correctly not adding it to the table of contents, while \pdfbookmark[0] still working and adds and hidden list to the table of contents?

I managed to fix this by changing his answer to this:

\newcommand{\whenlistisnotempty}[3]{
  \setbox0\vbox{#2}%
  \typeout{The height of the list '#1' is '\the\ht0'}%
  \ifdim\ht0>100pt%
    #3%
    \unvbox0%
  \fi%
}

So, when using it, I use it like this:

\whenlistisnotempty{\listfigurename}{%
    \addcontentsline{toc}{section}{List of Figures}
    \\listoffigures
}{\pdfbookmark[0]{\listfigurename}{lol}}

Then, the \pdfbookmark[0] stopped adding it to the PDF bookmark contents.

The list of tables keeps is showing up on the PDF bookmarks while it is not showing up on the table of contents. The list of tables should not show up anywhere because it is empty.

enter image description here

Full example:

\documentclass[10pt,twocolumn]{memoir}
\usepackage{bookmark}

\usepackage{chngcntr}
\counterwithout{table}{chapter}
\counterwithout{figure}{chapter}

% https://tex.stackexchange.com/questions/61086/how-to-create-my-own-list-of
\newcommand{\mytextpreliminarylistname}{Short Table of Contents}
\newlistof{textpreliminarycontents}{tpc}{\mytextpreliminarylistname}

% https://tex.stackexchange.com/questions/66604/resetting-counter
% https://tex.stackexchange.com/questions/388489/custom-list-throw-latex-error
\newlistentry{textpreliminarycounter}{tpc}{0}

% https://tex.stackexchange.com/questions/56131/continuing-page-numbering-roman
\renewcommand{\thetextpreliminarycounter}{\arabic{textpreliminarycounter}}

% https://tex.stackexchange.com/questions/71162/reset-section-numbering-between
\newcommand{\addtotextpreliminarycontent}[1]
{%
  \refstepcounter{textpreliminarycounter}%
  \addcontentsline{tpc}{textpreliminarycounter}{%
      \protect\numberline{\thetextpreliminarycounter}#1}\par%
}

\newbox\boxAforwhenlistisnotempty
\newbox\boxBforwhenlistisnotempty

\newcommand{\whenlistisnotempty}[2]{%
  \setbox\boxAforwhenlistisnotempty\vbox{#2}%
  \setbox\boxBforwhenlistisnotempty\vbox{%
    \large\contentsname\vskip\baselineskip
    \vskip\baselineskip
    \vskip\afterchapskip
    \vskip\midchapskip
  }%
  \typeout{The height of the list '#1'
      is '\the\ht\boxAforwhenlistisnotempty'
      from '\the\ht\boxBforwhenlistisnotempty'}%
  \ifdim\ht\boxAforwhenlistisnotempty>\ht\boxBforwhenlistisnotempty%
    \unvbox\boxAforwhenlistisnotempty%
  \fi%
}

\begin{document}
\whenlistisnotempty{\mytextpreliminarylistname}{
\pdfbookmark[0]{\mytextpreliminarylistname}{tpc}
\textpreliminarycontents*
}

\whenlistisnotempty{\listfigurename}{
\pdfbookmark[0]{\listfigurename}{lof}
\addtotextpreliminarycontent{\listfigurename}
\listoffigures*
}

\whenlistisnotempty{\listtablename}{
\pdfbookmark[0]{\listtablename}{lot}
\addtotextpreliminarycontent{\listtablename}
\listoftables*
}

\chapter{Chap Chap}

\begin{figure}[h]\centering
\caption{my figure}
\end{figure}

\begin{figure}[h]\centering
\caption{another figure}
\end{figure}

% \begin{table}[h]\centering
% \caption{my table}
% \end{table}

% \begin{table}[h]\centering
% \caption{another table}
% \end{table}

\end{document}

Update

  1. Successful compilation log from MikTex:

    This is pdfTeX, Version 3.14159265-2.6-1.40.18 (MiKTeX 2.9.6400)
    entering extended mode
    (test3.tex
    LaTeX2e <2017-04-15>
    Babel <3.12> and hyphenation patterns for 76 language(s) loaded.
    (D:\User\Documents\latex\texmfs\install\tex\latex\memoir\memoir.cls
    Document Class: memoir 2016/05/16 v3.7f configurable book, report, article docu
    ment class
    (D:\User\Documents\latex\texmfs\install\tex\generic\oberdiek\ifpdf.sty)
    (D:\User\Documents\latex\texmfs\install\tex\latex\ifetex\ifetex.sty
    (D:\User\Documents\latex\texmfs\install\tex\plain\ifetex\ifetex.tex))
    (D:\User\Documents\latex\texmfs\install\tex\generic\ifxetex\ifxetex.sty)
    (D:\User\Documents\latex\texmfs\install\tex\generic\oberdiek\ifluatex.sty)
    (D:\User\Documents\latex\texmfs\install\tex\latex\memoir\mem10.clo))
    (D:\User\Documents\latex\texmfs\install\tex\latex\oberdiek\bookmark.sty
    (D:\User\Documents\latex\texmfs\install\tex\generic\oberdiek\pdfescape.sty
    (D:\User\Documents\latex\texmfs\install\tex\generic\oberdiek\ltxcmds.sty)
    (D:\User\Documents\latex\texmfs\install\tex\generic\oberdiek\pdftexcmds.sty
    (D:\User\Documents\latex\texmfs\install\tex\generic\oberdiek\infwarerr.sty)))
    (D:\User\Documents\latex\texmfs\install\tex\generic\oberdiek\ifvtex.sty)
    (D:\User\Documents\latex\texmfs\install\tex\latex\hyperref\hyperref.sty
    (D:\User\Documents\latex\texmfs\install\tex\generic\oberdiek\hobsub-hyperref.st
    y
    (D:\User\Documents\latex\texmfs\install\tex\generic\oberdiek\hobsub-generic.sty
    )) (D:\User\Documents\latex\texmfs\install\tex\latex\graphics\keyval.sty)
    (D:\User\Documents\latex\texmfs\install\tex\latex\oberdiek\auxhook.sty)
    (D:\User\Documents\latex\texmfs\install\tex\latex\oberdiek\kvoptions.sty)
    (D:\User\Documents\latex\texmfs\install\tex\latex\hyperref\pd1enc.def)
    (D:\User\Documents\latex\texmfs\install\tex\latex\00miktex\hyperref.cfg)
    (D:\User\Documents\latex\texmfs\install\tex\latex\url\url.sty))
    (D:\User\Documents\latex\texmfs\install\tex\latex\memoir\memhfixc.sty)
    
    Package hyperref Message: Driver (autodetected): hpdftex.
    
    (D:\User\Documents\latex\texmfs\install\tex\latex\hyperref\hpdftex.def
    (D:\User\Documents\latex\texmfs\install\tex\latex\oberdiek\rerunfilecheck.sty))
     (D:\User\Documents\latex\texmfs\install\tex\latex\oberdiek\bkm-pdftex.def))
    (test3.aux)
    (D:\User\Documents\latex\texmfs\install\tex\latex\hyperref\nameref.sty
    (D:\User\Documents\latex\texmfs\install\tex\generic\oberdiek\gettitlestring.sty
    ))
    Redoing nameref's sectioning
    Redoing nameref's label
    (test3.tpc)
    The height of the list 'Short Table of Contents' is '151.0pt' from '94.6825pt'
    [1{D:/User/Documents/latex/texmfs/data/pdftex/config/pdftex.map}] (test3.lof)
    The height of the list 'List of Figures' is '149.05556pt' from '94.6825pt'
    [2] (test3.lot)
    The height of the list 'List of Tables' is '127.0pt' from '94.6825pt'
    [3] [4] [5] (test3.aux) )<D:/User/Documents/latex/texmfs/install/fonts/type1/pu
    blic/amsfonts/cm/cmbx12.pfb><D:/User/Documents/latex/texmfs/install/fonts/type1
    /public/amsfonts/cm/cmr10.pfb>
    Output written on test3.pdf (5 pages, 32811 bytes).
    Transcript written on test3.log.
    
  2. Successful compilation log from TexLive 2016

    This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016/Debian) (preloaded format=pdflatex)
     \write18 enabled.
    entering extended mode
    (./main.tex
    LaTeX2e <2017/01/01> patch level 3
    Babel <3.9r> and hyphenation patterns for 83 language(s) loaded.
    (/usr/share/texlive/texmf-dist/tex/latex/memoir/memoir.cls
    Document Class: memoir 2016/05/16 v3.7f configurable book, report, article docu
    ment class
    (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty)
    (/usr/share/texlive/texmf-dist/tex/latex/ifetex/ifetex.sty
    (/usr/share/texlive/texmf-dist/tex/plain/ifetex/ifetex.tex))
    (/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty)
    (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty)
    (/usr/share/texlive/texmf-dist/tex/latex/memoir/mem10.clo)
    (/usr/share/texlive/texmf-dist/tex/latex/memoir/mempatch.sty))
    (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/bookmark.sty
    (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdfescape.sty
    (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty)
    (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty
    (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty)))
    (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty)
    (/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty
    (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty
    (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty))
    (/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty)
    (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty)
    (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty)
    (/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def)
    (/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg)
    (/usr/share/texlive/texmf-dist/tex/latex/url/url.sty))
    (/usr/share/texlive/texmf-dist/tex/latex/memoir/memhfixc.sty)
    
    Package hyperref Message: Driver (autodetected): hpdftex.
    
    (/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def
    (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty))
    (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/bkm-pdftex.def))
    (latexcache/main.aux)
    (/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
    (/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty))
    Redoing nameref's sectioning
    Redoing nameref's label
    (latexcache/main.tpc)
    The height of the list 'Short Table of Contents' is '151.0pt' from '94.6825pt'
    [1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (latexcache/main.lof)
    The height of the list 'List of Figures' is '151.0pt' from '94.6825pt'
    [2] (latexcache/main.lot)
    The height of the list 'List of Tables' is '127.0pt' from '94.6825pt'
    [3] [4] [5] (latexcache/main.aux) )</usr/share/texlive/texmf-dist/fonts/type1/p
    ublic/amsfonts/cm/cmbx12.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/
    amsfonts/cm/cmr10.pfb>
    Output written on latexcache/main.pdf (5 pages, 27841 bytes).
    SyncTeX written on latexcache/main.synctex.gz.
    Transcript written on latexcache/main.log.
    

References:

  1. How to stop \newsavebox giving me bad boxes warnings or how to use better names with \setbox?
4
  • ending your example with ... and saying "I have before each list something like" does not help anyone answer. The point of the example code is to allow people to trace the issue and test answers, please make it a complete small document that shows the issue. Nov 10, 2019 at 10:35
  • @DavidCarlisle, I added a working minimal example.
    – user
    Nov 10, 2019 at 13:13
  • This example doesn't compile. It tells me you use \bbl@beforestart, which is undefined. Nov 10, 2019 at 13:20
  • @dgoodmaniii, I updated the question with the compilation logs and it is compiling file. I also got the same error but it happened because I had .aux files from another project, and I fixed it by removing all my latex .aux files before compiling this. After that, you can compile as much as you want and no error are going to show up and there will be no need to remove your .aux files anymore.
    – user
    Nov 10, 2019 at 13:36

0

You must log in to answer this question.

Browse other questions tagged .