我有一份scartcl
文档,我想添加页眉,使部分与左侧对齐,页面的第一个子部分与右侧对齐。页眉不应为斜体。我应该怎么做?
更新
根据以下答案这问题并使用scrpage2
我发现以下内容:
\documentclass{scrartcl}
\usepackage[autooneside]{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\automark{section}
\renewcommand\subsectionmark[1]{\markright{\MakeMarkcase {\thesubsection\hskip .5em\relax#1}}}
\rohead{\ifnum\pdfstrcmp\botmark=0 \rightmark\else\leftmark{} --- \rightmark\fi}
\usepackage{lipsum}
\begin{document}
\section{Section}
\subsection{Subsection1}
\lipsum
\subsection{Subsection2}
\lipsum
\end{document}
我仍然有三个问题:* 页眉是斜体* 部分未在右侧对齐* 在第一页上,部分显示两次,而不是部分和小节。
有人可以帮我吗?
解决方案:这是我用过的埃塞克斯回答,谢谢!
\documentclass[headsepline]{scrartcl}
\usepackage[
autooneside=false,% use left and right marks with a onesided document
automark% set \leftmark and \rightmark automatically by \section and \subsection
]{scrlayer-scrpage}
\clearpairofpagestyles
\ihead{\leftmark}% section on the inner (oneside: right) side
\ohead{\ifstr{\leftmark}{\rightmark}{}{\rightmark}}% subsection on the outer (oneside: left) side
\addtokomafont{pagehead}{\upshape}% header upshape instead italic
\cfoot{\thepage}
\addtokomafont{pagefoot}{\upshape}% header upshape instead italic
\usepackage{lipsum}
\begin{document}
\section{Section}
\subsection{Subsection1}
\lipsum
\subsection{Subsection2}
\lipsum
\end{document}
答案1
建议scrlayer-scrpage
与KOMA-Script类一起使用。
\documentclass{scrartcl}
\usepackage[
autooneside=false,% use left and right marks with a onesided document
automark% set \leftmark and \rightmark automatically by \section and \subsection
]{scrlayer-scrpage}
\clearpairofpagestyles
\ihead{\leftmark}% section on the inner (oneside: right) side
\ohead{\rightmark}% subsection on the outer (oneside: left) side
\addtokomafont{pagehead}{\upshape}% header upshape instead italic
\usepackage{lipsum}
\begin{document}
\section{Section}
\subsection{Subsection1}
\lipsum
\subsection{Subsection2}
\lipsum
\end{document}
解决你的第一个和第二个问题:
但第三个仍然存在:
要理解这个问题:
在您的示例中\section
,并\subsection
设置一个二分标记:\section
将右侧部分和左侧部分设置为当前部分条目。\subsection
将右侧部分设置为当前小节并保存左侧部分不变。
标记有三种类型:\botmark
是页面上的最后一个有效标记、\firstmark
是页面上设置的第一个标记以及\topmark
是最后一页的内容\botmark
。如果页面上没有新的标记\botmark
,并且\firstmark
的内容与 相同\topmark
。
请注意\leftmark
使用\botmark
和\rightmark
使用\firstmark
。
在您的示例中,第 1 页上的第一个标记由设置,\section{Section}
因此此页面上第一个标记的右侧部分也是“部分”。
如果标题中的左侧条目与右侧条目相同,则可以删除它:
\ohead{\ifstr{\leftmark}{\rightmark}{}{\rightmark}}
或者使用\rightbotmark
if\leftmark
和\rightmark
相等:
\ohead{\ifstr{\leftmark}{\rightmark}{\rightbotmark}{\rightmark}}
但是,这些页面上的最后一个子部分会被使用。此外,您的问题并没有真正得到解决:
\documentclass{scrartcl}
\usepackage[
autooneside=false,
automark
]{scrlayer-scrpage}
\clearpairofpagestyles
\ihead{\leftmark}
\ohead{\ifstr{\leftmark}{\rightmark}{\rightbotmark}{\rightmark}}
\addtokomafont{pagehead}{\upshape}
\usepackage{lipsum}
\begin{document}
\section{Section1}
\subsection{Subsection1}
\lipsum
\section{Section2}
\lipsum
\end{document}
现在您可以\righttopmark
在此类页面上使用
\documentclass{scrartcl}
\usepackage[autooneside=false,automark]{scrlayer-scrpage}
\clearpairofpagestyles
\ihead{\leftmark}
\ohead{%
\ifstr{\leftmark}{\rightmark}
{\ifstr{\leftmark}{\rightbotmark}
{\righttopmark}
{\rightbotmark}}
{\rightmark}
}
\addtokomafont{pageheadfoot}{\upshape}
\usepackage{lipsum}
\begin{document}
\section{Section1}
\subsection{Subsection1}
\lipsum
\section{Section2}
\lipsum
\end{document}
要得到
但我认为这没什么用。
如果使用文章类,我建议仅设置标题中的部分。