我想创建一条命令,用比当前字体小一个点的字体打印参数。
例如,如果文档的字体为 11pt,则命令必须使用 10pt 字体进行打印。如果文档的字体为 10pt,则我希望命令使用 9pt 字体进行打印。
不过,我不希望将其绑定到文档的字体大小。如果在将字体定义为 Xpt 的环境中使用该命令,我希望该命令生成字体大小为 (X-1)pt 的文本
答案1
答案2
当前字体大小存储在宏中\f@size
:
\RequirePackage{fix-cm} % or use a scalable font
\documentclass{article}
\makeatletter
\newcommand{\oneptsmaller}[1]{%
\begingroup
\fontsize{\dimexpr\f@size pt-1pt}{\f@baselineskip}\selectfont
#1%
\endgroup
}
\makeatother
\begin{document}
\fontname\font\ \oneptsmaller{\fontname\font}
\large
\fontname\font\ \oneptsmaller{\fontname\font}
\footnotesize
\fontname\font\ \oneptsmaller{\fontname\font}
\end{document}
使用可缩放字体,例如\usepackage{baskervald}
,
注意:\fontname\font
仅用于显示当前使用的字体。 如果是,则ybvr8t
没有at
子句,因为字体的自然大小为 10pt。
答案3
fontspec
我亲自和我心爱的人一起做过XelaTex
。这里有一个 Libertine 的例子(因为它很漂亮)。
\usepackage{fontspec}
\setmainfont[Ligatures=TeX,]{Linux Libertine O}
\newfontfamily{\ninetypercent}[Scale=0.90]{Linux Libertine O}
\newcommand{\ninety}[1]{{\ninetypercent #1}
这样做\ninety{text}
会使您的字体比基本字体小 10%。要从 11pt 获得 10pt 大小,您只需进行快速计算,并将缩放参数设置为 0.909(如果您想要非常精确的话)。
这样,您就可以按照您喜欢的倍数(可以是 3.5%、50% 等等)减小任意字体大小,并且它始终与您的基本字体大小相关。
我同意这有点小题大做,但是它fontspec
有很多非常值得玩的功能。
答案4
对 egreg 所提出的建议进行了改进,可以使其参数化如下:
\documentclass[12pt]{article}
%: ==== N pt smaller
\makeatletter
\newcommand{\hbFontSmaller}[2]{%
\begingroup
\fontsize{\dimexpr\f@size pt-#1pt}{\f@baselineskip}\selectfont
#2%
\endgroup
}
\makeatother
% ====
\begin{document}
Abcde
\hbFontSmaller{1}{Abcde}
\hbFontSmaller{2}{Abcde}
\hbFontSmaller{3}{Abcde}
\hbFontSmaller{4}{Abcde}
\hbFontSmaller{5}{Abcde}
\hbFontSmaller{6}{Abcde}
\hbFontSmaller{7}{Abcde}
\hbFontSmaller{8}{Abcde}
Abcde
\end{document}