如何改变标题栏中 \makepsmarks 选择的方向?

如何改变标题栏中 \makepsmarks 选择的方向?

我在让命令\makepsmarks按照我希望的方式运行方面遇到了一些麻烦。我希望标题中的部分标题按以下方式运行:在第二页面的某一部分。当一个部分在页面中间停止时,我希望页眉中的标题来自该部分,而不是页面开头的部分。

如果你编译我的最小示例并查看第 3 页,则页眉中不应有章节标题。第 5 页的章节标题应保留为第一节,直到下一页,因为第一节在该页结束。

我尝试摆弄bothleftright命令并更改\leftmark\rightmark命令,但我还没有找到解决方案,所以我希望你能帮忙。

\documentclass[12pt,a4paper,onecolumn,oneside,final]{memoir}
\usepackage{multicol}
\usepackage[english]{babel}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
\usepackage[textwidth=10cm,textheight=22cm]{geometry}
\usepackage{calc}
\usepackage{lipsum}


\makepagestyle{HDR}
\makepsmarks{HDR}{\nouppercaseheads 
\createmark{chapter}{left}{nonumber}{}{\space}
\createmark{section}{right}{nonumber}{}{\space} 
\makeheadrule{HDR}{10cm}{\normalrulethickness}
}
\makeoddhead{HDR}{\small\normalfont\mdseries\textsc{\leftmark}\hskip.3cm\vrule\hskip.3cm\bfseries\rightmark}{}{}
\makeoddfoot{HDR}{}{\thepage}{}

\begin{document}
\pagestyle{HDR}
\chapter{Chapter One}
\lipsum
\section{Section One}
\lipsum
\section{Section Two}
\lipsum
\end{document}

答案1

您可以\rightmark使用\topmark而不是\firstmark,但如果某个部分从页面顶部开始,就会出错。您可以通过在部分前发出 mark als 来修复此问题(但不保证在任何情况下都能正常工作):

\documentclass[12pt,a4paper,onecolumn,oneside,final]{memoir}
\usepackage[textwidth=10cm,textheight=22cm]{geometry}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[latin]{babel}% just to avoid bad hyphenation

\usepackage{lmodern}
\usepackage{microtype} % for better results
\usepackage{xparse}

\usepackage{calc}
\usepackage{multicol}
\usepackage{lipsum}

\makepagestyle{HDR}
\makepsmarks{HDR}{%
  \nouppercaseheads
  \createmark{chapter}{left}{nonumber}{}{\space}%
  \createmark{section}{right}{nonumber}{}{\space}%
  \makeheadrule{HDR}{10cm}{\normalrulethickness}%
}
\makeoddhead{HDR}{%
  \small\normalfont\mdseries
  \textsc{\leftmark}%
  \hspace{.3cm}\vrule\hspace{.3cm}%
  \textbf{\rightmark}%
}{}{}
\makeoddfoot{HDR}{}{\thepage}{}

\makeatletter
\renewcommand{\rightmark}{\expandafter\@rightmark\topmark\@empty\@empty}
\makeatother

\let\memoirsection\section
\RenewDocumentCommand{\section}{oom}{%
  \markright{#3}% emit a mark also before the section
  \IfNoValueTF{#1}
    {\memoirsection{#3}}
    {\IfNoValueTF{#2}
      {\memoirsection[#1]{#3}}
      {\memoirsection[#1][#2]{#3}}%
    }%
}


\begin{document}
\pagestyle{HDR}
\chapter{Chapter One}
\lipsum
\section{Section One}
\lipsum
\section{Section Two}
\lipsum
\lipsum[1-2]
\section{Section Three}
\lipsum[1]

\end{document}

在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

相关内容