如何显示文档特定位置正在使用的字体大小。
例如,在下面的代码中,我生成了一个 PDF 文件,其中显示了每个形状和大小实际使用的字体,
\documentclass{article}
\usepackage{fontspec}
\usepackage{pgffor}
\usepackage{xcolor}
\definecolor{mred} {cmyk}{0,1,1,0.6}
\definecolor{mblue}{cmyk}{1,1,0,0.2}
\setmainfont{Minion Pro}
\long\def\testfont{
\foreach \size in
{normalsize, Large, Huge}
{\csname\size\endcsname\testshape}}
\long\def\testshape{
\vskip\baselineskip
\csname\size\endcsname\size
\vskip\baselineskip
\foreach \shape in {up, it, sc, bf}
{\par\csname text\shape\endcsname
{
\textcolor{mred}{\directlua{tex.print(font.fonts[font.current()].fullname)}}
\textcolor{mblue}{\shape}
}}
\vskip\baselineskip}
\begin{document}
\pagestyle{empty}
\flushleft
\rmfamily\testfont\vfill
\end{document}
这将产生以下内容。(如您所见fontspec
或未luaotfload
选择正确的光学字体,请参阅我的答案使用 MinionPro 作为主字体,使用 Fontspec 作为等宽字体如何解决这个问题)
我的问题是,我不想打印“normalize”、“Large”、“Huge”,而是想打印“10pt”或“10”之类的内容,这样我就可以看到实际的字体大小,就像在这个例子中我可以看到实际使用的字体一样。
我知道可以使用 Acrobat 之类的软件来实现这一点。但是这样一来,用户就必须多次点击鼠标才能检查字体。我更喜欢一种更自动化的方式,类似于我在示例中打印字体名称的方式。
提前谢谢了。
答案1
我不知道我是否理解了你的问题。这是我的解释 ;-)
\documentclass[11pt]{article}
\begin{document}
\makeatletter
orig: \f@size
\verb+\small+ \small \f@size
\verb+\normalsize+ \normalsize \f@size
\verb+\large+ \large \f@size
\verb+\Huge+ \Huge \f@size
\makeatother
\end{document}
答案2
\f@size
是 LaTeX2e NFSS 中的内部宏。如果未通过 NFSS 指定字体,则可能会失败。要了解 LaTeX 命令的大小,例如\large
,您可以阅读classes
文档。
此外,您不需要直接使用 Lua 代码来获取字体名称。
以下是显示字体大小的低级方法:
\documentclass{article}
\usepackage{luaotfload}
\font\1="TeX Gyre Termes"
\begin{document}
\fontname\font\ at \the\fontdimen6\font
% cmr10 at 10.00002pt
\1
\fontname\font\ at \the\fontdimen6\font
% TeX Gyre Termes at 10.0pt
\end{document}
\fontdimen6
是1em
.的长度,表示当前字体。请参阅第 4 章\font
\fontname
\fontdimen
TeX 按主题分类了解更多解释。
答案3
font.fonts[font.current()].size
给出大小缩放点。除以 65536 将得出以 pts 为单位的大小。