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 回答2

0
<p>实际上,你是 article 里做到 book 的结构,不推荐。</p><p>还是老实用 book 去定制样式,更加方便。</p>
0
<p></p><p>\rightmark 是使用章节标题后自动设置的宏,实际是在与章节标题对应的标记命令\xxxmark 中调用 \markright 或 \markboth 生成的。</p><p>你想在article中达到这样的效果,要同时重定义 \sectionmark 和 \subsectionmark,因为右边的页眉实际使用的是当前页面的第一个 mark ,也就是说要如果 section 没有 subsection 就设置 mark ,否则不设置 mark</p><p>简单的实现了下你描述的功能:</p><p><img src="/data/ueditor/php/upload/image/20200506/1588769503507948.png" style="" title="1588769503507948.png"/></p><p><img src="/data/ueditor/php/upload/image/20200506/1588769503985992.png" style="" title="1588769503985992.png"/></p><pre class="brush:plain;toolbar:false">\documentclass{ctexart} \ctexset{section={ &nbsp;&nbsp;name={第,节}, &nbsp;&nbsp;number=\arabic{section}, &nbsp;&nbsp;} } \usepackage{ifthen} \usepackage{cntperchap} \RegisterCounters{section,&nbsp;subsection} \usepackage{fancyhdr} \fancyhf{} \rhead{% &nbsp;&nbsp;\textnormal{\kaishu&nbsp;第\&nbsp;\thepage\&nbsp;页\hspace{1em}\rightmark}{}% } \pagestyle{fancy} \makeatletter \renewcommand\sectionmark[1]{% &nbsp;&nbsp;\GetStoredCounterValue[\value{section}]{subsection}% &nbsp;&nbsp;\ifnumgreater{\value{cps@@tempcounterstorage}}{1}{}{% &nbsp;&nbsp;&nbsp;&nbsp;\markright{\CTEXthesection\&nbsp;#1}% &nbsp;&nbsp;}% } \makeatother \renewcommand\subsectionmark[1]{% &nbsp;&nbsp;\markright{\CTEXthesubsection\&nbsp;#1}% } \begin{document} \section{天地玄黄} \subsection{测试} \newpage \section{宇宙洪荒} \end{document}</pre><p>实际情况更复杂点,比如我这里没有考虑当前页面只有一个 section,而且和第一个 subsection 不在同一页,这个时候显然 section 也要设置 mark 的。</p>

你的回答

请登录后回答

你的回答将会帮助更多人,请务必认真回答问题。