pgfornaments
为了风格起见,我尝试用 装饰我的书的页码。
以下是我使用的代码:
\documentclass{extreport}
\usepackage{lipsum}
\usepackage{pgfornament}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\fancyhead{}
\fancyfoot{}
\cfoot{\pgfornament[scale=0.25]{11} \thepage\ \pgfornament[scale=0.25]{14}}
\begin{document}
\lipsum[1]
\end{document}
这是我的结果:
我的问题是:我怎样才能将装饰物稍微向上移动,以便装饰物与页码高度的中间对齐?我希望它是对称的。
答案1
可以提出装饰品使用一种\vcenter{\hbox{...}}
方法。这样,装饰品将被放置在(隐式)数学轴上。
一些与样式相关的评论:(i) 如果您提供这种类型的装饰,我认为您应该使用采用旧式数字的字体——至少对于页码。(ii) 我还会在装饰和页码之间留出更多空间,例如,借助\quad
语句。否则,页码块可能会看起来太“块状”。
\documentclass{extreport}
\usepackage{pgfornament,cfr-lm}
\newcommand{\myraise}[1]{$\vcenter{\hbox{#1}}$}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\fancyhead{}
\fancyfoot{}
\cfoot{\myraise{\pgfornament[scale=0.25]{11}}\quad%
\thepage\quad\myraise{\pgfornament[scale=0.25]{14}}}
\begin{document}
\setcounter{page}{316}
\null % make sure document isn't entirely empty
\end{document}
附录:如果您希望使用cfr-lm
字体包,同时仅将旧式数字用于页码(因此,在文档的其他地方使用“衬线”数字),我建议您在序言中添加以下说明:
\usepackage[rm={lining,tabular},sf={lining,tabular},tt={lining,tabular}]{cfr-lm}
\renewcommand\thepage{\textpo{\arabic{page}}}
这样,除了页码之外,所有地方都将默认使用排列/表格数字,而页码将使用旧式/比例数字。
答案2
装饰物对称地位于基线上,这有助于决定在您的情况下将其提升多少。
假设您使用衬线数字,则凸起的量恰好是当前字体中数字高度的一半。
\documentclass{article}
\usepackage{pgfornament}
\newcommand{\figureornament}[2][1]{%
\raisebox{.5\fontcharht\font`0}{%
\pgfornament[scale=#1]{#2}%
}%
}
\begin{document}
\figureornament[0.25]{11} 317 \figureornament[0.25]{14}
\end{document}
是否使用它并不重要\cfoot
。
答案3
您可以使用该\raisebox
命令。
\raisebox{distance}[extend-above][extend-below]{text}
该
\raisebox
命令用于升高或降低文本。第一个强制参数指定文本升高多少(如果是负数,则降低多少)。文本本身在 LR 模式下处理。有时让 LaTeX 认为某个物体的尺寸与实际尺寸不同(或者与 LaTeX 通常认为的尺寸不同)很有用。该
\raisebox
命令可让您告诉 LaTeX 它有多高。第一个可选参数
extend-above
使 LaTeX 认为文本超出了指定的长度。第二个可选参数extend-below
使 LaTeX 认为文本超出了指定的长度。
在这种情况下,请将\pgfornament
命令包装在 中\raisebox
,然后调整distance
值直到看起来正确为止。例如,
\raisebox{3pt}{\pgfornament[scale=0.25]{11}}
答案4
有趣。我尝试了纯 TikZ 方法:
\documentclass{extreport}
\usepackage[pass,showframe]{geometry}
\usepackage{pgfornament}
\usepackage[rm={lining,tabular},sf={lining,tabular},tt={lining,tabular}]{cfr-lm}
\renewcommand\thepage{\textpo{\arabic{page}}}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}
\fancyhead{}
\fancyfoot{}
\cfoot{%
\tikz[baseline]{%
\node[anchor=east] at (0,0){\pgfornament[scale=0.25]{11}};
\node[anchor=center] at (0.5,0) {\thepage};
\node[anchor=west] at (1,0) {\pgfornament[scale=0.25]{14}};
}%
}
\begin{document}
\noindent This is some text with lining 123,456,789.0 numerals.
\setcounter{page}{1234}
\null % make sure document isn't entirely empty
\end{document}
这样做的好处是,无需上下调整装饰或页码——TikZ 通过对齐节点的东、中、西锚点来实现这一点。此外,页码的位置恰好位于两个装饰的坐标中间,这再次要感谢 TikZ。这可能并非在所有情况下都有效,但在这种情况下似乎有效。
只是一个想法。