我的要求是,需要在页眉和页码(页码)中给出积极的跟踪(即增加字符之间的字母间距),为此我使用以下代码:
\documentclass{book}
\usepackage{lipsum,soul}
\sodef\RHtrack{}{0.95pt}{4pt}{5pt}%
\makeatletter
\def\ps@headings{
\def\@oddfoot{\relax}%
\def\@evenfoot{\relax}%%
\def\@evenhead{\fontsize{7}{7}\selectfont{{\thepage}}\ignorespaces\hspace*{7\p@}\ignorespaces{\MakeUppercase\leftmark}\hfill}%
\def\@oddhead{\fontsize{7}{7}\selectfont\hfill{\MakeUppercase\rightmark}\ignorespaces\hspace*{7\p@}\ignorespaces{\thepage}}%
\let\@mkboth\markboth
\def\chaptermark##1{\markboth{\RHtrack{##1}}{\RHtrack{##1}}}%
}
\makeatother
\pagestyle{headings}
\begin{document}
\setcounter{page}{101}
\chapter{Chapter Title}
\lipsum[1-10]
\end{document}
这仅适用于运行头,但对于对开本则不起作用,请提出建议......
答案1
您\ignorespaces
无需执行任何操作。我只是删除了它们。要使页面显示间距,您必须先扩展数字,然后再将其提供给\RHtrack
。以下使用尽可能\romannumeral
扩展(但对于、和编号失败)。\thepage
Roman
alph
Alph
\documentclass{book}
\usepackage{lipsum,soul}
\sodef\RHtrack{}{0.95pt}{4pt}{5pt}%
\makeatletter
\def\ps@headings
{%
\def\@oddfoot{\relax}%
\def\@evenfoot{\relax}%%
\def\@evenhead
{%
\fontsize{7}{7}\selectfont
\expandafter\RHtrack\expandafter{\romannumeral-`0\thepage}%
\hspace*{7\p@}%
\MakeUppercase{\leftmark}\hfill
}%
\def\@oddhead
{%
\fontsize{7}{7}\selectfont
\hfill
\MakeUppercase{\rightmark}%
\hspace*{7\p@}%
\expandafter\RHtrack\expandafter{\romannumeral-`0\thepage}%
}%
\let\@mkboth\markboth
\def\chaptermark##1{\markboth{\RHtrack{##1}}{\RHtrack{##1}}}%
}
\makeatother
\pagestyle{headings}
\begin{document}
\setcounter{page}{101}
\chapter{Chapter Title}
\lipsum[1-10]
\end{document}
如果您使用 pdfTeX 或 LuaTeX,您可以考虑使用microtype
及其字母间距:
\documentclass{book}
\usepackage{lipsum}
\usepackage[letterspace=150]{microtype}
\makeatletter
\def\ps@headings
{%
\def\@oddfoot{\relax}%
\def\@evenfoot{\relax}%%
\def\@evenhead
{%
\fontsize{7}{7}\selectfont
\lsstyle
\thepage
\hspace*{7\p@}%
\MakeUppercase{\leftmark}\hfill
}%
\def\@oddhead
{%
\fontsize{7}{7}\selectfont
\lsstyle
\hfill
\MakeUppercase{\rightmark}%
\hspace*{7\p@}%
\thepage
}%
\let\@mkboth\markboth
\def\chaptermark##1{\markboth{##1}{##1}}%
}
\makeatother
\pagestyle{headings}
\begin{document}
\setcounter{page}{101}
\chapter{Chapter Title}
\lipsum[1-10]
\end{document}
(结果看起来非常相似)
编辑使用soul
和一个临时宏进行扩展使用\edef
可以得到使用解决方案,soul
以适用于 LaTeX 中的每个标准计数器格式(我希望我没有忘记一个,我测试过:arabic
,,,,,):alph
Alph
roman
Roman
\documentclass{book}
\usepackage{lipsum,soul}
\sodef\RHtrack{}{0.95pt}{4pt}{5pt}%
\makeatletter
\def\ps@headings
{%
\def\@oddfoot{\relax}%
\def\@evenfoot{\relax}%%
\def\@evenhead
{%
\fontsize{7}{7}\selectfont
\begingroup
\edef\tmp{\thepage}%
\expandafter\RHtrack\expandafter{\tmp}%
\endgroup
\hspace*{7\p@}%
\MakeUppercase{\leftmark}\hfill
}%
\def\@oddhead
{%
\fontsize{7}{7}\selectfont
\hfill
\MakeUppercase{\rightmark}%
\hspace*{7\p@}%
\begingroup
\edef\tmp{\thepage}%
\expandafter\RHtrack\expandafter{\tmp}%
\endgroup
}%
\let\@mkboth\markboth
\def\chaptermark##1{\markboth{\RHtrack{##1}}{\RHtrack{##1}}}%
}
\makeatother
\pagestyle{headings}
\begin{document}
\setcounter{page}{101}
\chapter{Chapter Title}
\lipsum[1-10]
\end{document}
答案2
使用microtype
而不是soul
。
500 这个倍数有些夸张,只是为了清楚地表明跟踪确实完成了。
\documentclass{book}
\usepackage{microtype}
\usepackage{lipsum}
\makeatletter
\def\ps@headings{%
\def\@oddfoot{\relax}%
\def\@evenfoot{\relax}%
\def\@evenhead{\footnotesize\textls[500]{\thepage\hspace*{7\p@}\MakeUppercase{\leftmark}}\hfill}%
\def\@oddhead{\hfill\footnotesize\textls[500]{\MakeUppercase{\rightmark}\hspace*{7\p@}\thepage}}%
\let\@mkboth\markboth
\def\chaptermark##1{\markboth{##1}{##1}}%
}
\makeatother
\pagestyle{headings}
\begin{document}
\setcounter{page}{101}
\chapter{Chapter Title}
\lipsum[1-20]
\end{document}