我正在尝试在 ToC 和 mintoc 中使用不同的部分名称。
(这可能听起来很奇怪,但由于 toc 和 monitoc 不会具有相同的深度,我想对包含详细小节的 mintoc 中没有用的 toc 名称提供见解)
很容易将 toc 中的名称与 body 中的名称更改,但我无法在 toc 和 monitoc 中输入不同的名称。
数学方程
\documentclass[11pt]{report}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[tight,k-tight]{minitoc}
\begin{document}
\dominitoc
\tableofcontents
\chapter{Animals}
\minitoc
\section{Lion}
\section[Zebra family]{Zebra}
\subsection{Mini-zebra}
\end{document}
我希望 toc 中有“Zebra family”,但在 monitoc 中有“Zebra”。
感谢您的帮助!
答案1
侵入一些核心内核宏:
\documentclass[11pt]{report}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[tight,k-tight]{minitoc}
\usepackage{etoolbox}
\makeatletter
\patchcmd\@sect{\fi #7}{\fi \ONEORTHEOTHER{#7}{#8}}{}{\typeout{***FAILED***}}
\patchcmd\@sect{\fi #7}{\fi \ONEORTHEOTHER{#7}{#8}}{}{\typeout{***FAILED TOO***}}
\makeatother
\DeclareRobustCommand\ONEORTHEOTHER[2]{#1}% ensures normal default behaviour
\begin{document}
\dominitoc
\tableofcontents
\DeclareRobustCommand\ONEORTHEOTHER[2]{#2}% switches to usage of alternative title
\chapter{Animals}
\minitoc
\section{Lion}
\section[Zebra family]{Zebra}
\subsection{Mini-zebra}
\end{document}
主要目录:
米尼托克:
根据要求,它在 Minitoc 中使用与章节标题本身相同的标题 Zebra。
答案2
您可以定义一个强健的命令,该命令通常会选择其第一个参数并丢弃第二个参数,但在 minitoc 中会改变行为。
每个 minitoc 都是按组排版的,因此组结束时更改就会消失。
\documentclass[11pt]{report}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{etoolbox}
\usepackage[tight,k-tight]{minitoc}
\makeatletter
\pretocmd{\sv@minitoc@}
{\let\tocorminitoc\@secondoftwo}
{}{}
\newrobustcmd\tocorminitoc[2]{#1}
\makeatother
\begin{document}
\dominitoc
\tableofcontents
\chapter{Animals}
\minitoc
\section{Lion}
\section[Zebra\tocorminitoc{ family}{}]{Zebra}
\subsection{Mini-zebra}
\end{document}