当一个章节以 开头时\Glsentrylong{SomeEntry}
,我遇到一个问题,即大写字母没有转移到标题,而章节却正确地大写。
梅威瑟:
\documentclass[twoside,11pt]{book}
\usepackage{fancyhdr}
\fancypagestyle{plain}{
\fancyhf{}
\fancyfoot[RO,LE]{\thepage}
\renewcommand{\headrulewidth}{0pt}
}
\renewcommand{\sectionmark}[1]{\markright{\thesection.\ #1}}
\renewcommand{\chaptermark}[1]{\markboth{\chaptername\ \thechapter.\ #1}{}}
\fancypagestyle{mystyle}{
\fancyhf{}
\fancyfoot[LE,RO]{\thepage}
\fancyhead[RO]{\nouppercase{\rightmark}}
\fancyhead[LE]{\nouppercase{\leftmark}}
\renewcommand{\headrulewidth}{.4pt}
}
\usepackage{emptypage}
\usepackage[nopostdot,nonumberlist,section=paragraph]{glossaries}
\renewcommand*\glossaryname{}
\makeglossaries
\setglossarystyle{super}
\glstoctrue
\newacronym{ACR}{ACR}{acronym}
\usepackage{lipsum}
\title{Some title}
\begin{document}
\maketitle
\pagestyle{mystyle} % if this is commented out, the default section formating is capitalizing the first letter appropriately
\chapter{First chapter}
\section{\Glsentrylong{ACR}}
\lipsum[1-10]
\end{document}
我注意到问题在于fancyhdr
,如果book.cls
使用默认标题,标题中部分名称的首字母就会正确大写。
答案1
首字母大写命令类似于\Glsentrylong
用于\MakeTextUppercase
将首字母转换为大写,但这\nouppercase
在页面样式中被抵消。对\section
MWE 中的小改动:
\section{\Glsentrylong{ACR} \MakeTextUppercase{s}ample}
说明了这一点:
\nouppercase
我认为唯一的解决方案是从页面样式中删除并阻止book
类应用大写。我认为最好使用更灵活的类(例如memoir
或scrbook
),但如果您想坚持使用book
,这是一种可能性。
尽管您已重新定义\sectionmark
和以从其定义中\chaptermark
删除,但它们仍会被页面样式重置。如果您在设置页面样式之前和之后添加\MakeUppercase
book
\show
\show\sectionmark
\show\chaptermark
\pagestyle{mystyle}
\show\sectionmark
\show\chaptermark
记录文件将显示以下内容:
> \sectionmark=\long macro:
#1->\markright {\thesection .\ #1}.
l.36 \show\sectionmark
?
> \chaptermark=\long macro:
#1->\markboth {\chaptername \ \thechapter .\ #1}{}.
l.37 \show\chaptermark
?
> \sectionmark=macro:
#1->\markright {\MakeUppercase {\ifnum \c@secnumdepth >\z@ \thesection . \ \fi
#1}}.
l.40 \show\sectionmark
?
> \chaptermark=macro:
#1->\markboth {\MakeUppercase {\ifnum \c@secnumdepth >\m@ne \@chapapp \ \thecha
pter . \ \fi #1}}{}.
l.41 \show\chaptermark
如果将这些命令的重新定义移至页面样式设置之后并\nouppercase
从页面样式中删除,则标题除部分内容外都将为小写\MakeTextUppercase
。
\documentclass[twoside,11pt]{book}
\usepackage{fancyhdr}
\fancypagestyle{plain}{
\fancyhf{}
\fancyfoot[RO,LE]{\thepage}
\renewcommand{\headrulewidth}{0pt}
}
\fancypagestyle{mystyle}{%
\fancyhf{}%
\fancyfoot[LE,RO]{\thepage}%
\fancyhead[RO]{\rightmark}%
\fancyhead[LE]{\leftmark}%
\renewcommand{\headrulewidth}{.4pt}%
}
\usepackage{emptypage}
\usepackage[nopostdot,nonumberlist,section=paragraph]{glossaries}
\renewcommand*\glossaryname{}
\makeglossaries
\setglossarystyle{super}
\glstoctrue
\newacronym{ACR}{ACR}{acronym}
\usepackage{lipsum}
\title{Some title}
\begin{document}
\maketitle
\pagestyle{mystyle}
\renewcommand{\sectionmark}[1]{\markright{\thesection.\ #1}}%
\renewcommand{\chaptermark}[1]{\markboth{\chaptername\ \thechapter.\ #1}{}}%
\chapter{First chapter}
\section{\Glsentrylong{ACR} \MakeTextUppercase{s}ample}
\lipsum[1-10]
\end{document}