标题中首字母缩略词条目的正确做法

标题中首字母缩略词条目的正确做法

当一个章节以 开头时\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在页面样式中被抵消。对\sectionMWE 中的小改动:

\section{\Glsentrylong{ACR} \MakeTextUppercase{s}ample}

说明了这一点:

页眉图像:1.1 缩写示例

\nouppercase我认为唯一的解决方案是从页面样式中删除并阻止book类应用大写。我认为最好使用更灵活的类(例如memoirscrbook),但如果您想坚持使用book,这是一种可能性。

尽管您已重新定义\sectionmark和以从其定义中\chaptermark删除,但它们仍会被页面样式重置。如果您在设置页面样式之前和之后添加\MakeUppercasebook\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}

页眉图像:1.1 缩写示例

相关内容