我正在尝试创建一个页面布局,其中页码以黑色背景上的白色文本颜色显示在右边距。
\documentclass[parskip=full]{scrreprt}
\usepackage[left=2cm,right=2cm]{geometry}
\usepackage[headwidth=paper]{scrlayer-scrpage}
\usepackage{xcolor}
\automark[chapter]{chapter}
\setkomafont{pagenumber}{\normalfont\textcolor{white}}
\chead{}
\ohead{\leftmark\quad\colorbox{black}{\makebox[2cm][l]{\pagemark}}}
\usepackage{lipsum}
\begin{document}
\chapter{First Chapter}
\colorbox{black}{\makebox[2cm]{\textcolor{white}{1-2-3}}}
\lipsum[1-11]
\end{document}
这已经奏效了 —— 至少差不多了。不过,我有两个问题。
字段的大小
\makebox
似乎不准确。黑色背景的左边框似乎比右文本边框稍微向左一点。在 Affinity Photo 中加载生成的 PDF 时,两个\makebox
文件的大小约为 2.2 厘米,而不是 2.0 厘米。是否可以将黑色背景的命令移入表达式
\setkomafont{pagenumber}
或\renewcommand*{\pagemark}...
命令中?这将有助于使用相同的黑框页码定义不同的标题。
答案1
您可以使用\makebox[\dimexpr2cm-2\fboxsep\relax]{...}
来调整框的宽度:
\documentclass[parskip=full]{scrreprt}
\usepackage[left=2cm,right=2cm,
%showframe% show the page layout
]{geometry}
\usepackage[headwidth=paper]{scrlayer-scrpage}
\usepackage{xcolor}
\automark[chapter]{chapter}
\addtokomafont{pagenumber}{\color{white}}
\clearpairofpagestyles
\ohead[\pagemark]{\leftmark\quad\pagemark}
\renewcommand*\pagemark{%
\colorbox{black}{%
\makebox[\dimexpr2cm-2\fboxsep\relax][l]{%
\usekomafont{pagenumber}{\thepage}%
}}}
\usepackage{lipsum}
\begin{document}
\chapter{First Chapter}
\colorbox{black}{\makebox[\dimexpr2cm-2\fboxsep\relax]{\textcolor{white}{1-2-3}}}
\lipsum[1-11]
\end{document}
几何选项的结果showframe
:
或者您可以使用\makebox[0pt][l]{...}
移动页边距中的页码框:
\documentclass[parskip=full]{scrreprt}
\usepackage[left=2cm,right=2cm,
%showframe% show the page layout
]{geometry}
\usepackage{scrlayer-scrpage}% <- changed
\usepackage{xcolor}
\automark[chapter]{chapter}
\addtokomafont{pagenumber}{\color{white}}
\clearpairofpagestyles
\ohead[{\makebox[0pt][l]{\pagemark}}]{\leftmark\quad\makebox[0pt][l]{\pagemark}}
\renewcommand*\pagemark{%
\colorbox{black}{%
\makebox[2cm][l]{%
\usekomafont{pagenumber}{\thepage}%
}}}
\usepackage{lipsum}
\begin{document}
\chapter{First Chapter}
\colorbox{black}{\makebox[\dimexpr2cm-2\fboxsep\relax]{\textcolor{white}{1-2-3}}}
\lipsum[1-11]
\end{document}
或者您可以声明一个新的页面样式层并将其添加到层页面样式中:
\documentclass[parskip=full]{scrreprt}
\usepackage[left=2cm,right=2cm,
showframe% show the page layout
]{geometry}
\usepackage{scrlayer-scrpage}% <- changed
\usepackage{xcolor}
\automark[chapter]{chapter}
\addtokomafont{pagenumber}{\color{white}}
\clearpairofpagestyles
\ohead{\leftmark\quad}
\DeclareNewLayer[
background,
head,
addhoffset=\textwidth,
oddpage,
contents=\colorbox{black}{\makebox[5cm][l]{\pagemark}}
]{pagenumber}
\AddLayersToPageStyle{scrheadings}{pagenumber}
\AddLayersToPageStyle{plain.scrheadings}{pagenumber}
\usepackage{lipsum}
\begin{document}
\chapter{First Chapter}
\colorbox{black}{\makebox[\dimexpr2cm-2\fboxsep]{\textcolor{white}{1-2-3}}}
\lipsum[1-11]
\end{document}
答案2
当将\colorbox
内边距设置为 0pt 时,LaTeX 还会删除文本上方和下方的内边距。我认为最好或至少最简单的方法是目测内边距并进行相应的更正。
我还找到了第二个问题的解决方案。
这是修改后的脚本:
\documentclass[parskip=full]{scrreprt}
\usepackage[left=2cm,right=2cm]{geometry}
\usepackage[headwidth=paper]{scrlayer-scrpage}
\usepackage{xcolor}
\automark[chapter]{chapter}
\renewcommand*{\pagemark}{\colorbox{black}{\makebox[1.85cm][l]{\normalfont\textcolor{white}\thepage}}}
\chead{}
\ohead{\leftmark\quad\pagemark}
\cfoot[]{}
\usepackage{lipsum}
\begin{document}
\chapter{First Chapter}
\lipsum[1-11]
\end{document}
现在可以使用简单的参数轻松地重复使用黑色背景上的白色页码\pagemark
。
我还添加了\cfoot[]{}
从页脚中删除以前不可见的页码(因为它是白色的)。