我想定义一个命令来简化字体配置,如下所示:
\newcommand{\setfont}[2]{\fontsize{#1}{#2}\selectfont}
新的命令\setfont
接受两个参数:一个是字体的大小,另一个是行距。
但是,直接以点为单位指定行距并不方便。更直观的方法是设置,例如两倍行距或 1.5 倍行距。因此,在我的命令中,我想将第二个参数设为比例因子。问题是如何将比例因子应用于行距参数?使用算术运算还是其他解决方法?
答案1
以下是实现此目的的一种方式:
\documentclass{article}
\usepackage{lmodern,lipsum,setspace}% http://ctan.org/pkg/{lmodern,lipsum,setspace}
\newcommand{\setfont}[2]{\setstretch{#2}\fontsize{#1}{#1}\selectfont}
\begin{document}
\lipsum[2]
\setfont{20}{1.5}\lipsum[2]
\end{document}
请注意,它\fontsize
接受两个参数,但不一定非要是维度。因此,使用比例因子和维度乘法的组合可能无法按预期工作(尚未测试)。setspace
包裹提供\setstretch{<num>}
帮助,同时还管理其他事物。
还要记住,行距因素并不总是像看上去的那样。参见为何线扩展因子如此呢?
答案2
TeX
可以像 中一样乘以维度1.5\dimenregister
。因此,您可以做的是将 #1 分配给临时维度寄存器并将其乘以。
这有效:
\documentclass{article}
\makeatletter
\newcommand\setfont[2]{\@tempdima=#1\fontsize{\@tempdima}{#2\@tempdima}%
\selectfont}
\makeatother
\begin{document}
\setfont{25pt}{1.5} Test\\ test
\end{document}
PS Dan 在评论中建议进行增强,允许以下命令\setfont{25}{1.5}
:
\makeatletter
\newcommand\setfont[2]{\@defaultunits\@tempdima#1pt\relax\@nnil
\fontsize{\@tempdima}{#2\@tempdima}\selectfont}
\makeatother