将字体大小减小一个点

将字体大小减小一个点

我想创建一条命令,用比当前字体小一个点的字体打印参数。

例如,如果文档的字体为 11pt,则命令必须使用 10pt 字体进行打印。如果文档的字体为 10pt,则我希望命令使用 9pt 字体进行打印。

不过,我不希望将其绑定到文档的字体大小。如果在将字体定义为 Xpt 的环境中使用该命令,我希望该命令生成字体大小为 (X-1)pt 的文本

答案1

您还可以使用包relsize,它可以满足您的需求。考虑这个 MWE:

\documentclass{article}
\usepackage{relsize}
\begin{document}
This is normal size font.

\smaller

And this is one point smaller.
\end{document}

在此处输入图片描述

答案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}  

相关内容