以长度形式返回当前字体大小的命令?

以长度形式返回当前字体大小的命令?

我需要一种方法来获取当前字体大小的长度。

我希望我没有忽略任何已经提供此功能的东西。我发现我可以做的

\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-heightCSS/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一开始的设置并不会改变它的值。

在此处输入图片描述

相关内容