DND-5e-LaTeX-Template icon indicating copy to clipboard operation
DND-5e-LaTeX-Template copied to clipboard

Appendices in the table of contents

Open timvdalen opened this issue 4 years ago • 9 comments

Due to the current setup of dndtoc.sty, the following TOC contents:

\babel@toc {english}{}
\contentsline {chapter}{Introduction}{1}{chapter*.2}%
\contentsline {chapter}{\numberline {1}Test}{2}{chapter.1}%
\contentsline {chapter}{\numberline {A}Test}{4}{appendix.A}%

which renders as follows in book:

image

renders as follows in dndbook:

image

Renewing \tocchapterabbreviationname allows renaming Ch. to something like Chapter, but is there a way to differentiate between normal chapters and appendix chapters? The titletoc documentation (https://mirror.lyrahosting.com/CTAN/macros/latex/contrib/titlesec/titlesec.pdf) seems to suggest so at the bottom of page 4 ("It defaults to \chaptername except in appendices where it is \appendixname. Use it instead of \chaptername when defining a chapter.").

timvdalen avatar Jan 24 '21 19:01 timvdalen

Please post a Minimum Working Example to generate the dndbook example.

BrianCriswell avatar Jan 24 '21 19:01 BrianCriswell

Of course, apologies:

\documentclass[letterpaper,twocolumn,openany,nodeprecatedcode]{dndbook}
\usepackage[english]{babel}

\usepackage{hyperref}

\begin{document}
	\frontmatter%
	\tableofcontents

	\mainmatter%

	\chapter{Test}

	\appendix
	\chapter{Test}
\end{document}

Edit: Cut down the MWE a little further

timvdalen avatar Jan 24 '21 19:01 timvdalen

Placing this as a note to myself (and others) on a direction to fix this.

https://tex.stackexchange.com/questions/57642/checking-if-is-appendix-or-chapter

I would like something that does not dig into internal book variables if possible. The problem is that our abbreviation in the chapter heading of the toc styling does not handle appendices. Ideally we typeset the chapter abbreviation if we are in mainmatter, appendix abbreviation if we are in the appendices, and nothing otherwise.

BrianCriswell avatar Jan 25 '21 00:01 BrianCriswell

Thanks for the direction, I will see if I can hack something together for my document and report back if it might be useful generally.

Unrelated, but your proposed approach would solve another problem I have with the layout in the original issue. The Introduction chapter is defined as:

\chapter*{Introduction}
\addcontentsline{toc}{chapter}{Introduction}

because I don't want it to appear as Chapter 1 or Chapter 0. However, my current approach doesn't affect \leftmark, so the page footer is still set to the previous actual chapter (Contents). I'm currently using a specific \pagestyle with hardcoded text as a workaround, but promoting the Introduction to an actual chapter (in the frontmatter) showing up without the chapter abbreviation would be a much better way to handle this.

timvdalen avatar Jan 25 '21 08:01 timvdalen

More notes:

  • This has exposed other parts of the class that need better handling of which section we are in.
  • Testing for @mainmatter or @appendix is possibly better than comparing names. https://tex.stackexchange.com/questions/96702/how-to-re-define-the-chapter-mark-without-changing-the-appendix-heading
  • ~I thought there was a way to suppress the text "Chapter X: " from a chapter within mainmatter (aside from using the starred version), but I cannot find it at the moment.~ See below
  • \frontmatter is definitely one way to do it, but it is not always desireable since it sets page numbers to roman numerals, and \mainmatter resets the page number to "1" in arabic numerals.
  • The footer needs to cover chapter, appendix, and other "chapters" (such as \frontmatter and \backmatter) that do not use "\chaptertitlename X" in their format.
  • This also might be relevant. https://tex.stackexchange.com/questions/410738/report-change-or-remove-only-one-chapter-heading

BrianCriswell avatar Jan 25 '21 14:01 BrianCriswell

Thanks for the direction, I will see if I can hack something together for my document and report back if it might be useful generally.

Unrelated, but your proposed approach would solve another problem I have with the layout in the original issue. The Introduction chapter is defined as:

\chapter*{Introduction}
\addcontentsline{toc}{chapter}{Introduction}

because I don't want it to appear as Chapter 1 or Chapter 0. However, my current approach doesn't affect \leftmark, so the page footer is still set to the previous actual chapter (Contents). I'm currently using a specific \pagestyle with hardcoded text as a workaround, but promoting the Introduction to an actual chapter (in the frontmatter) showing up without the chapter abbreviation would be a much better way to handle this.

Okay, so I remembered at least one way to handle this in a (mostly) elegant manner.

\setcounter{secnumdepth}{-1}
\chapter{Introduction}
\setcounter{secnumdepth}{0}

In effect we tell LaTeX to only number Parts (-1). This means that "Chapter X" is not displayed on Introduction and the chapter counter is suspended. When the section numbering depth is restored to Chapter (0), the chapter number will start at 1 (or the next unused number).

BrianCriswell avatar Jan 25 '21 22:01 BrianCriswell

Having spent some time looking into this, I believe I have a fix for at least the footer problem. By defining \chaptermark (https://github.com/rpgtex/DND-5e-LaTeX-Template/blob/f0ef279/lib/dndheader.sty#L22) as \@chapapp\ \thechapter :~ instead of \chaptername\ \thechapter :~, we get a proper Appendix vs Chapter. This also keeps frontmatter intact. Backmatter is broken (displaying the last chapter before the backmatter), but that is also true without this change.

Testing for @mainmatter or \ifx\@chapapp\appendixname does not seem to work for me in the footers/toc. @mainmatter is always true in the toc and footers (though it is correct in the actual document), while I cannot get the comparison between \@chappapp and \appendixname to work at all.

I will hold off on creating a PR until I can find a fix for the TOC problem as well, but maybe my results so far are helpful to someone else.

timvdalen avatar Feb 14 '21 13:02 timvdalen

Just tested this against the latest dev and it seems like the above was already fixed in https://github.com/rpgtex/DND-5e-LaTeX-Template/commit/f0ef27988a9f79d3bcb106ce93be929713cff342, so that leaves the TOC stuff

timvdalen avatar Feb 14 '21 13:02 timvdalen

Hi. Back on the appendix topic, the proposed solution did not work for me, so I edited it a bit.

First of all, I define a new command in lib/dndstrings.sty to store the TOC abbreviation for the appendix:

\newcommand\tocappendixabbreviationname{Apx.}

Then, in lib/dndtoc.sty, use it.

  \newcommand\tocchapapp{\tocchapterabbreviationname}
    \g@addto@macro\appendix{%
      \addtocontents{toc}{\protect\renewcommand{\protect\@chapapp}{\appendixname}}%
     % \addtocontents{toc}{\protect\renewcommand{\protect\tocchapapp}{\appendixname}}%
      \addtocontents{toc}{\protect\renewcommand{\protect\tocchapapp}{\tocappendixabbreviationname}}%

In my early tests it seems to work.

A working commit can be found in my fork.

wishmerhill avatar Mar 07 '23 13:03 wishmerhill