我需要一种方法来获取当前字体大小的长度。
我希望我没有忽略任何已经提供此功能的东西。我发现我可以做的
\makeatletter
\newlength{\fsize}
\setlength{\fsize}{\f@size pt}
\makeatother
但它将被设置为固定长度,并且当字体大小改变时不会更新。
现在我尝试将其放入命令中:
\makeatletter
\newlength{\fsizeb}
\setlength{\fsizeb}{\f@size pt}
\newcommand\fsize{\fizeb}
\makeatother
(仍然可以作为长度,但也不会更新 - 不确定这是否真的有效,也许这是我的第一个错误)
最后我尝试了
\makeatletter
\newlength{\fsizeb}
\newcommand\fsize{%
\setlength{\fsizeb}{\f@size pt}%
\fsizeb%
}
失败并且似乎没有返回长度。
我认为我做了一些非常错误的事情(我对 LaTeX 的这个部分还很陌生,所以我希望你能告诉我我想要的是否可能,并给我一些如何实现的指点......)
至于为什么我(认为)需要这个:我希望能够设置\baselineskip
为字体大小的特定倍数(类似于line-height
CSS/SVG 中的属性工作),就像这样(使用 Manuel 在评论中建议的解决方案):
\documentclass{scrartcl}
\makeatletter
\newcommand*\fsize{\dimexpr\f@size pt\relax}
\makeatother
\begin{document}
\setlength{\baselineskip}{1\fsize}
\verb=\setlength{\baselineskip}{1\fsize}= -- line-height: 1; bars touching exactly\\\textbar\\\textbar
\setlength{\baselineskip}{1.25\fsize}
\verb=\setlength{\baselineskip}{1.25\fsize}= -- line-height: 1.25; (relative to font-size)\\\textbar\\\textbar
\end{document}
如果还有更简单的解决方案我会很高兴听到。
答案1
\makeatletter
\newcommand*\fsize{\dimexpr\f@size pt\relax}
\makeatother
这样您就可以像这样使用宏\setlength{\baselineskip}{1.33\fsize}
。
答案2
\selectfont
是更改字体的开关。您可以将其绑定到此并更新\fsize
:
\documentclass{article}
\usepackage{letltxmacro}
\newlength{\fsize}
% https://tex.stackexchange.com/q/88001/5764
\LetLtxMacro\oldselectfont\selectfont
\makeatletter
\DeclareRobustCommand{\selectfont}{\oldselectfont\setlength{\fsize}{\f@size pt}}
\makeatother
\begin{document}
\tiny\the\fsize
\scriptsize\the\fsize
\footnotesize\the\fsize
\small\the\fsize
\normalsize\the\fsize
\large\the\fsize
\Large\the\fsize
\LARGE\the\fsize
\Huge\the\fsize
\end{document}
答案3
如果你设置了长度,它不会改变,除非你重置它。你需要一个宏:
\makeatletter
\newcommand{\currentfsize}{\f@size pt}
\makeatother
示例(使用 Werner 的代码):
\documentclass{article}
\makeatletter
\newcommand{\currentfsize}{\f@size pt}
\makeatother
\newdimen\fsize
\newcommand{\setfsize}{\setlength{\fsize}{\currentfsize}}
\begin{document}
\setfsize % should be 10pt
\tiny\currentfsize
\scriptsize\currentfsize
\footnotesize\currentfsize
\small\currentfsize
\normalsize\currentfsize
\large\currentfsize
\Large\currentfsize
\LARGE\currentfsize
\Huge\currentfsize
\the\fsize % should be 10pt (printed in \Huge size)
\end{document}
如你所见,\fsize
一开始的设置并不会改变它的值。