1

Gonzalo Medina pretty TOC/LOF/LOT (memoir class) can be found at Pretty List of Figures and List of Tables. If the class is switched to the book class, there are 187 error messages produced. Is there a way to translate this code to the book class ?

\documentclass[a4paper,11pt,twoside,openright]{memoir}
\usepackage{fixltx2e}

\usepackage[english]{babel}

\usepackage[T1]{fontenc}
\usepackage{ae,aecompl}
\usepackage[utf8]{inputenx}

\usepackage{float}
\usepackage{graphicx}

\setlrmargins{*}{*}{1}
\setulmargins{*}{*}{1}
\checkandfixthelayout[nearest]

\usepackage{color}
\usepackage{xcolor}

\usepackage{mdframed}   
\usepackage{mathtools}
\usepackage{hyphenat}       % I use it to prevent hyphenation of table of contents items
\usepackage{refcount}
\usepackage{tikz}
\usetikzlibrary{calc}
%%% Do not include titletoc here - do it at the end of the "Pretty TOC" (very important!)
% WHY? Because then in the Part TOC, the next part will be displayed in the very end of that Part TOC! Of course, this will not happen in the very last Part TOC because there is no part after that...
% \usepackage{titletoc}             


%%% Pretty TOC
%%%%% adapted from https://tex.stackexchange.com/questions/35825/pretty-table-of-contents/35835
% a modification of the leftbar environment defined by the framed package
% will be used to place a vertical colored bar separating the page number and the
% title in chapter entries
\renewenvironment{leftbar}{%
  \def\FrameCommand{\textcolor{green}{\vrule width 1.5pt depth 0pt}\hspace*{15pt}}%
  \MakeFramed{\advance\hsize-\width\FrameRestore}}%
 {\endMakeFramed}

\makeatletter


% a command to circle the part numbers
\newcommand\Circle[1]{\tikz[overlay,remember picture] 
  \node[draw=blue,circle, text width=18pt,line width=1pt,align=center] {#1};}

% redefinitions for part entries
\renewcommand\cftpartfont{\Large\sffamily\bfseries}
\renewcommand\partnumberline[1]{%
    \hbox to \textwidth{\hss\Circle{\textcolor{red}{#1}}\hss}%
  \vskip 3.5ex\color{cyan}}

\renewcommand*{\l@part}[2]{%
  \ifnum \c@tocdepth >-2\relax
    \cftpartbreak
    \begingroup
      {\interlinepenalty\@M
       \leavevmode
       \settowidth{\@tempdima}{\cftpartfont\cftpartname}%
       \addtolength{\@tempdima}{\cftpartnumwidth}%
       \let\@cftbsnum \cftpartpresnum
       \let\@cftasnum \cftpartaftersnum
       \let\@cftasnumb \cftpartaftersnumb
       \advance\memRTLleftskip\@tempdima \null\nobreak\hskip -\memRTLleftskip
       \centering{\cftpartfont#1}\par%
       }
      \nobreak
        \global\@nobreaktrue
        \everypar{\global\@nobreakfalse\everypar{}}%
    \endgroup
  \fi}


% redefinitions for chapter entries
\renewcommand\chapternumberline[1]{\mbox{\small\@chapapp~#1}\par\noindent\Large}
\renewcommand\cftchapterfont{\sffamily}
\cftsetindents{chapter}{0pt}{0em}
\renewcommand\cftchapterpagefont{\large\sffamily\bfseries\color{blue}}

\newcommand*{\l@mychap}[3]{%
  \def\@chapapp{\large\color{cyan}#3}
  \vskip1ex%
  \par\noindent\begin{minipage}{\textwidth}%
  \parbox{4.5em}{%
    \hfill{\cftchapterpagefont#2}%
  }\hspace*{1.5em}%
  \parbox{\dimexpr\textwidth-4.5em-15pt\relax}{%
    \leftbar\cftchapterfont{\color{red}#1}\hspace{1sp}\endleftbar%
  }%
  \end{minipage}\par%
}
\renewcommand*{\l@chapter}[2]{%
  \l@mychap{#1}{#2}{\chaptername}%
}
\renewcommand*{\l@appendix}[2]{%
  \l@mychap{#1}{#2}{\appendixname}%
}

% redefinitions for section entries
\renewcommand\cftsectionfont{\sffamily\color{black}}
\renewcommand\cftsectionpagefont{\sffamily\itshape\color{blue}}
\renewcommand\cftsectionleader{\nobreak}
\renewcommand\cftsectiondotsep{\cftnodots}
\renewcommand\cftsectionafterpnum{\hspace*{\fill}}
\setlength\cftsectionnumwidth{12em}
\cftsetindents{section}{6em}{3em}
\renewcommand\cftsectionformatpnum[1]{%
  \hskip1em\hbox to \@pnumwidth{{\cftsectionpagefont #1\hfill}}}

% redefinitions for subsection entries
\renewcommand\cftsubsectionfont{\sffamily\color{black}}
\renewcommand\cftsubsectionpagefont{\sffamily\itshape\color{blue}}
\renewcommand\cftsubsectionleader{\nobreak}
\renewcommand\cftsubsectiondotsep{\cftnodots}
\renewcommand\cftsubsectionafterpnum{\hspace*{\fill}}
\setlength\cftsubsectionnumwidth{12em}
\cftsetindents{subsection}{9em}{3em}
\renewcommand\cftsubsectionformatpnum[1]{%
  \hskip1em\hbox to \@pnumwidth{{\cftsubsectionpagefont #1\hfill}}}

%%%% End of Pretty ToC

\settocdepth{subsection}
\setsecnumdepth{subsection}

% redefinitions for figure entries
\renewcommand\cftfigurefont{\sffamily\color{black}}
\renewcommand\cftfigurepagefont{\sffamily\itshape\color{blue}}
\renewcommand\cftfigureleader{\nobreak}
\renewcommand\cftfiguredotsep{\cftnodots}
\renewcommand\cftfigureafterpnum{\hspace*{\fill}}
\setlength\cftfigurenumwidth{12em}
\cftsetindents{figure}{6em}{3em}
\renewcommand\cftfigureformatpnum[1]{%
  \hskip1em\hbox to \@pnumwidth{{\cftfigurepagefont #1\hfill}}}

% redefinitions for table entries
\renewcommand\cfttablefont{\sffamily\color{black}}
\renewcommand\cfttablepagefont{\sffamily\itshape\color{blue}}
\renewcommand\cfttableleader{\nobreak}
\renewcommand\cfttabledotsep{\cftnodots}
\renewcommand\cfttableafterpnum{\hspace*{\fill}}
\setlength\cfttablenumwidth{12em}
\cftsetindents{table}{6em}{3em}
\renewcommand\cfttableformatpnum[1]{%
  \hskip1em\hbox to \@pnumwidth{{\cfttablepagefont #1\hfill}}}

\usepackage{etoolbox}  % or xpatch

% the following code adds chapter information into the LoF 
% for chapters containing figures
% initial definitions of the chapter info (name and number)
\def\thischaptertitle{}\def\thischapternumber{}
\newtoggle{noFigs}

\apptocmd{\@chapter}%
  {\gdef\thischaptertitle{#2}\gdef\thischapternumber{\thechapter}%
    \global\toggletrue{noFigs}}{}{}

% the figure environment does the job: the first time it is used after a \chapter command, 
% it writes the information of the chapter to the LoF
\AtBeginDocument{%
  \AtBeginEnvironment{figure}{%
    \iftoggle{noFigs}{
      \addtocontents{lof}{\protect\contentsline {chapter}%
        {\protect\numberline {\large\color{cyan}\@chapapp~\thischapternumber}{\thischaptertitle}}{}{} }
      \global\togglefalse{noFigs}
    }{}
  }%
}

% the following code adds chapter information into the LoT 
% for chapters containing tables
\newtoggle{noTabs}

\apptocmd{\@chapter}%
  {\gdef\thischaptertitle{#2}\gdef\thischapternumber{\thechapter}%
    \global\toggletrue{noTabs}}{}{}

% the table environment does the job: the first time it is used after a \chapter command, 
% it writes the information of the chapter to the LoT
\AtBeginDocument{%
  \AtBeginEnvironment{table}{%
    \iftoggle{noTabs}{
      \addtocontents{lot}{\protect\contentsline {chapter}%
        {\protect\numberline {\large\color{cyan}\@chapapp~\thischapternumber}{\thischaptertitle}}{}{} }
      \global\togglefalse{noTabs}
    }{}
  }%
}

% include after the change above (very important!)
\usepackage{titletoc}

\def\@endpart{
%
  \vfil
  \textcolor{red}{\hrule height 1.5 pt}
\setcounter{tocdepth}{0}

    \startcontents[parts]
    \printcontents[parts]{}{0}{} % change 0 to 1 etc. for more detail and vice versa

\textcolor{red}{\hrule height 1.5 pt}
  \par\bigskip
  \vfil\newpage
              \if@twoside
               \if@openright
                \null
                \thispagestyle{empty}%
                \newpage
               \fi
              \fi
              \if@tempswa
                \twocolumn
              \fi}
\makeatother
%%%

% be careful with the hyperref package; if colorlinks = true, then the (red) color in the chapter text in the TOC and  disappears! 
\usepackage{varioref,hyperref}
\hypersetup{
    bookmarks=true,                 % show bookmarks bar?
    unicode=false,                  % non-Latin characters in Acrobat’s bookmarks
    pdftoolbar=true,                % show Acrobat’s toolbar?
    pdfmenubar=true,                % show Acrobat’s menu?
    pdffitwindow=true ,             % window fit to page when opened
    pdfstartview={FitH},            % fits the width of the page to the window
    pdftitle={},                    % title
    pdfauthor={},   % author
    pdfsubject={},      % subject of the document
    pdfnewwindow=true,              % links in new window
    hidelinks=true,
    colorlinks=false,                   % false: boxed links; true: colored links
    linkcolor=black,                % color of internal links (change box color with linkbordercolor)
    citecolor=black,                % color of links to bibliography
    filecolor=black,                % color of file links
    urlcolor=aau-purple             % color of external links
}

\begin{document}

\frontmatter

    \tableofcontents*
    \cleardoublepage
    \listoffigures
    \cleardoublepage
    \listoftables
    \cleardoublepage

\chapter{Foreword}
Be careful about the URLs. Because the colorlinks is set to false (in the hypersetup in the preamble), this is how the URL will look like: \newline

\url{https://tex.stackexchange.com/posts/169068/edit} \newline

\noindent
If you would like to have the URLs in a specific colour, you have to manually colour code them: \newline

{\color{cyan}{\url{https://tex.stackexchange.com/posts/169068/edit}}} \newline

\noindent
However, If you do not care about the chapter  text colour in the TOC (if you want it black, which is standard), then the colorlinks can be set to true, which then should colour code the URLs automatically.


\mainmatter

\part{Designing with \TeX\ and \LaTeX}

\chapter{A test chapter}

\begin{figure}[H]
    \caption[(short) caption that goes to the LOF.]{(long) caption that goes below the figure}
\end{figure}

\begin{figure}[H]
    \caption[(short) caption that goes to the LOF.]{(long) caption that goes below the figure}
\end{figure}

\begin{figure}[H]
    \caption[(short) caption that goes to the LOF.]{(long) caption that goes below the figure}
\end{figure}

\begin{figure}[H]
    \caption[(short) caption that goes to the LOF.]{(long) caption that goes below the figure}
\end{figure}

\begin{figure}[H]
    \caption[(short) caption that goes to the LOF.]{(long) caption that goes below the figure}
\end{figure}

\chapter{Beginning to learn design with \TeX}
\section{Another test section}
\section{Another test section}

\begin{table}[H]
    \caption[(short) caption that goes to the LOT.]{(long) caption that goes below the figure}
\end{table}

\begin{table}[H]
    \caption[(short) caption that goes to the LOT.]{(long) caption that goes below the figure}
\end{table}

\begin{table}[H]
    \caption[(short) caption that goes to the LOT.]{(long) caption that goes below the figure}
\end{table}

\subsection{A test subsection}
\section{Another test section}
\subsection{A test subsection}
\subsection{A test subsection with a long title spanning more than one line in the table of contents}
\section{Another test section}
\section{Another test section}
\section{Another test section}



\chapter{Beginning to learn design with \LaTeX}
\section{A test section with a long title spanning more than one line in the table of contents}
\subsection{A test subsection}
\subsection{Another test subsection}
\section{A test section}
\phantomsection
\addcontentsline{toc}{section}{Test unnumbered section}
\section*{Test unnumbered section}
\subsection{A test subsection}
\section{Another test section}
\subsection{A test subsection}
\subsection{A test subsection}
\section{Another test section}
\section{Another test section}


\newpage\setcounter{page}{123}% just for the example

\part{Designing with HTML}

\chapter{Beginning to learn design with HTML and some other text to span more than one line}

\begin{figure}[H]
    \caption[(short) caption that goes to the LOF.]{(long) caption that goes below the figure}
\end{figure}

\begin{figure}[H]
    \caption[(short) caption that goes to the LOF.]{(long) caption that goes below the figure}
\end{figure}

\begin{figure}[H]
    \caption[(short) caption that goes to the LOF.]{(long) caption that goes below the figure}
\end{figure}

\section{Another test section}

\begin{table}[H]
    \caption[(short) caption that goes to the LOT.]{(long) caption that goes below the figure}
\end{table}

\begin{table}[H]
    \caption[(short) caption that goes to the LOT.]{(long) caption that goes below the figure}
\end{table}

\begin{table}[H]
    \caption[(short) caption that goes to the LOT.]{(long) caption that goes below the figure}
\end{table}

\section{Another test section}
\subsection{A test subsection}
\section{Another test section with a long title spanning more than one line in the table of contents}
\subsection{A test subsection}
\section{Another test section}



\chapter{Beginning to learn design with HTML and some other text to span more than one line} 
\section{Another test section}
\section{Another test section}
\subsection{A test subsection}
\subsection{A test subsection with a long title spanning more than one line in the table of contents}
\section{Another test section}
\section{Another test section}
\subsection{A test subsection}



\appendix

\chapter{Test Appendix}
\section{Another test section}

\begin{figure}[H]
    \caption[(short) caption that goes to the LOF.]{(long) caption that goes below the figure}
\end{figure}

\begin{figure}[H]
    \caption[(short) caption that goes to the LOF.]{(long) caption that goes below the figure}
\end{figure}

\begin{figure}[H]
    \caption[(short) caption that goes to the LOF.]{(long) caption that goes below the figure}
\end{figure}

\section{Another test section with a long title spanning more than one line in the table of contents}
\section{Another test section}

\begin{table}[H]
    \caption[(short) caption that goes to the LOT.]{(long) caption that goes below the figure}
\end{table}

\begin{table}[H]
    \caption[(short) caption that goes to the LOT.]{(long) caption that goes below the figure}
\end{table}

\begin{table}[H]
    \caption[(short) caption that goes to the LOT.]{(long) caption that goes below the figure}
\end{table}

\subsection{A test subsection}
\section{Another test section}
\section{Another test section}

\end{document}

enter image description here enter image description here enter image description here

SDrolet
  • 4,908
  • 1
    Off-topic: For a quite modern LaTeX distribution you don't need fixltx2e any longer ;-) –  Jun 20 '16 at 16:13
  • 2
    It's quite tedious to transform all the memoir specific commands to book. –  Jun 20 '16 at 16:42
  • 2
    memoir does all that book does and more. Why go from memoir to book. – Peter Wilson Jun 20 '16 at 17:57
  • Your comments confirm that it is difficult to go from "memoir" to "book" class. So, I abandon the project of translation from memoir to book class of this specific pretty toc/LOF/LOT. – SDrolet Jun 20 '16 at 18:21
  • Would I have known the memoir class before, I would have considered it for writing my book. Now, I use over 30 packages, and have a lot of work already done. My document does not compile at all with the memoir class. I presume it would be equally difficult to translate my whole document from the book class to the memoir class. Easier for now to go with etoc : http://tex.stackexchange.com/questions/35825/pretty-table-of-contents. – SDrolet Jun 20 '16 at 18:40
  • 1
    Actually, it is (usually) far less difficult to go from book to memoir because memoir incorporates facilities of many packages. Generally, '(page) layout' related packages have been incorporated or accounted for in memoir while other sorts (e.g., graphics-related, programming-related, maths-related) have not. If you need help, it is perhaps worth asking a question about this. – jon Jun 20 '16 at 18:57

0 Answers0