我想要一个宏,将书名传递给标题页和页面标题。不幸的是,如果我传递包含换行命令的标题(在标题页上换行),那么页面标题中的行也会换行。
为了解决titling
和titlesec
我正在使用的包之间的冲突@frabjous 解决方案。可能我必须将它与删除换行命令的某些方法结合起来,因为这里。我不知道该怎么做。
代码:
\documentclass{article}
\usepackage[paperwidth=12cm,paperheight=11cm,twoside]{geometry}
\usepackage{fancyhdr}
\usepackage{titling}
\usepackage{titlesec}
\fancyhead[LE]{\mythetitle}
\pagestyle{fancy}
\let\oldtitle\title
\renewcommand{\title}[1]{\oldtitle{#1}\newcommand{\mythetitle}{#1}}
\author{Cookiemonster}
\title{Title\\consisting of \\ four \\lines}
\begin{document}
\begin{titlingpage}
\maketitle
\end{titlingpage}
\section{My section}
AAA
\end{document}
顺便说一句:根据titling
包的文档(第 5 页的顶部),标题页后的页码应该是 1,而不是 2。我在这段代码中做错了什么?
答案1
您可以使用
\fancyhead[LE]{\renewcommand\\{\unskip\space\ignorespaces}\mythetitle}
这样头部内部\\
就充当了空格,同时忽略了前后的空格,所以不会出现双倍的空格。
答案2
以下使用\\
从您的标题中删除l3regex
(因为之前和之后可能有空格,\\
必须将它们规范化为总共一个空格,使用正则表达式执行此操作非常方便)。
另外,我把页码编号固定为从 1 开始,但是为了获得正确的奇数/偶数页格式,在这种情况下必须在标题后引入一个空白页(使用 完成\thispagestyle{empty}\cleardoublepage
)。
\documentclass{article}
\usepackage[paperwidth=12cm,paperheight=11cm,twoside]{geometry}
\usepackage{fancyhdr}
\usepackage{titling}
\usepackage{titlesec}
\fancyhead[LE]{\mythetitle}
\pagestyle{fancy}
\let\oldtitle\title
\ExplSyntaxOn
\cs_new_protected:Npn \SXforrest_store_title:Nn #1#2
{
\tl_set:Nn \l_tmpa_tl {#2}
\regex_replace_all:nnN { \s* \c{\\} \s* } { \ } \l_tmpa_tl
\tl_gset_eq:NN #1 \l_tmpa_tl
}
\cs_set_eq:NN \storemytitle \SXforrest_store_title:Nn
\ExplSyntaxOff
\renewcommand{\title}[1]{\oldtitle{#1}\storemytitle\mythetitle{#1}}
\author{Cookiemonster}
\title{Title\\consisting of \\ four \\lines}
\begin{document}
\begin{titlingpage}
\maketitle
\end{titlingpage}
\thispagestyle{empty}
\cleardoublepage
\setcounter{page}{1}
\section{My section}
AAA
\newpage
BBB
\end{document}