盒子的确切尺寸

盒子的确切尺寸

我正在尝试创建一个页面布局,其中页码以黑色背景上的白色文本颜色显示在右边距。

\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}

这已经奏效了 —— 至少差不多了。不过,我有两个问题。

  1. 字段的大小\makebox似乎不准确。黑色背景的左边框似乎比右文本边框稍微向左一点。在 Affinity Photo 中加载生成的 PDF 时,两个\makebox文件的大小约为 2.2 厘米,而不是 2.0 厘米。

  2. 是否可以将黑色背景的命令移入表达式\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[]{}从页脚中删除以前不可见的页码(因为它是白色的)。

相关内容