假设我有一章的两个标题 t1 和 t2。我想在目录中显示 t1,在第一章页面以及页眉中显示 t2。
我使用\chapter[t1]{t2}
它来显示目录和第一章页面。但是标题显示的是 t1 而不是 t2。有没有办法在标题中强制显示 t2?
谢谢。
答案1
使用,和 的memoir
语法得到扩展:\chapter
\section
\chapter[toc-title][head-title]{title}
如果只使用一个参数,则目录和标题将使用相同的输入,因此您需要
\chapter[t1][t2]{t2}
对于 也类似\section
。
也许您对更简单的界面感兴趣。我定义了命令\Chapter
和\Section
。如果像这样调用
\Chapter{Title}
那么行为与 相同\chapter{title}
。但是你可以调用
\Chapter[toc=Title for TOC]{Title}
标题的标题将是“Title”,而在目录中,您将获得所述内容。第三种调用方式是
\Chapter[toc=Title for TOC,head=Title for head]{Title}
用于独立指定这三个元素。这是一个完整的示例。
\documentclass{memoir}
\usepackage{xparse}
\usepackage{kantlipsum} % just for the example
\ExplSyntaxOn
% set up the keys
\keys_define:nn { tmv/titles }
{
toc .tl_set:N = \l_tmv_titles_toc_tl,
head .tl_set:N = \l_tmv_titles_head_tl,
}
% user level commands
\NewDocumentCommand{\Chapter}{ O{} m }
{
\tmv_set_titles:nn { #1 } { #2 }
\tmv_division:VVnN \l_tmv_titles_toc_tl \l_tmv_titles_head_tl { #2 } \chapter
}
\NewDocumentCommand{\Section}{ O{} m }
{
\tmv_set_titles:nn { #1 } { #2 }
\tmv_division:VVnN \l_tmv_titles_toc_tl \l_tmv_titles_head_tl { #2 } \section
}
% auxiliary command for setting the keys
\cs_new_protected:Npn \tmv_set_titles:nn #1 #2
{
\keys_set:nn { tmv/titles }
{
toc = { #2 },
head = { #2 },
#1
}
}
% the command that calls either \chapter or \section
\cs_new_protected:Npn \tmv_division:nnnN #1 #2 #3 #4
{
#4[#1][#2]{#3}
}
\cs_generate_variant:Nn \tmv_division:nnnN { VV }
\ExplSyntaxOff
\begin{document}
\frontmatter
\tableofcontents*
\mainmatter
\Chapter{Unique title}
\Section{Unique section title}
\kant
\Chapter[toc=Title for TOC]{Title also for head}
\Section[toc=Title for TOC]{Title also for head}
\kant
\Chapter[toc=Title for TOC 2,head=Title for head]{Title}
\Section[toc=Title for TOC 2,head=Title for head]{Title}
\kant
\end{document}