请问如何设置才能在右上角页眉处显示 subsection的名称呢?

2020-05-06 16:06发布

[图]\ctexset{section={ name={第,章}, number=\arabic{section}, }}\usepackage{fancyhdr}\fancyhf{}\lhead{\tex...



image.png

\ctexset{section={

name={第,章},

number=\arabic{section},

}

}

\usepackage{fancyhdr}

\fancyhf{}

\lhead{\textnormal{\kaishu\rightmark}}


%\rhead{ }如何设置才能在右上角页眉处显示 subsection的名称呢?

\pagestyle{CTEXthesubsection}

%sectionmark的重定义需要在\pagestyle之后生效

\renewcommand\sectionmark[1]{%

\markright{\CTEXthesection:#1}}

%=====正文开始=====

\begin{document}

\section{Test1}

\subsubsection{Test1.1}

\section{Test2}

\end{document}


2条回答

\rightmark 是使用章节标题后自动设置的宏,实际是在与章节标题对应的标记命令\xxxmark 中调用 \markright 或 \markboth 生成的。

你想在article中达到这样的效果,要同时重定义 \sectionmark 和 \subsectionmark,因为右边的页眉实际使用的是当前页面的第一个 mark ,也就是说要如果 section 没有 subsection 就设置 mark ,否则不设置 mark

简单的实现了下你描述的功能:

\documentclass{ctexart}
\ctexset{section={
  name={第,节},
  number=\arabic{section},
  }
}
\usepackage{ifthen}
\usepackage{cntperchap}
\RegisterCounters{section, subsection}
\usepackage{fancyhdr}
\fancyhf{}
\rhead{%
  \textnormal{\kaishu 第\ \thepage\ 页\hspace{1em}\rightmark}{}%
}
\pagestyle{fancy}
\makeatletter
\renewcommand\sectionmark[1]{%
  \GetStoredCounterValue[\value{section}]{subsection}%
  \ifnumgreater{\value{cps@@tempcounterstorage}}{1}{}{%
    \markright{\CTEXthesection\ #1}%
  }%
}
\makeatother
\renewcommand\subsectionmark[1]{%
  \markright{\CTEXthesubsection\ #1}%
}

\begin{document}
\section{天地玄黄}
\subsection{测试}
\newpage
\section{宇宙洪荒}
\end{document}

实际情况更复杂点,比如我这里没有考虑当前页面只有一个 section,而且和第一个 subsection 不在同一页,这个时候显然 section 也要设置 mark 的。

一周热门 更多>

相关问答