tikz 将字体大小设置为pts

tikz 将字体大小设置为pts

我正在使用 tikz 创建包含文本的彩色框。但是我无法使用 pts 设置这些框内的字体大小。

我找到了一个片段在这个问题中定义一个Boxed命令:

\newcommand{\Boxed}[2][]{%
    % #1 = box draw/fill options
    % #2 = text
    \settowidth{\LengthOfText}{\mbox{#2}}%
    \pgfmathsetlength{\LengthOfTextExceedingLineWidth}
        {\LengthOfText-\linewidth}
    \pgfmathsetlength{\TextWidth}{\LengthOfTextExceedingLineWidth > 0pt ? \linewidth : \LengthOfText}%
    \begin{tikzpicture}[baseline, inner sep=2pt, outer sep=0]
            \tikzstyle{every node}=[font=\small]
            \node [text width=\TextWidth, #1] (Origin) {#2};
                (Origin.south west) rectangle (Origin.north east) ;
    \end{tikzpicture}%
}

我对其进行了一些修改,但是使用tikzstyle我只能将字体设置为诸如\small\tiny等。我想将字体大小设置为 10pt。

答案1

由于您不介意框中的结果(这意味着没有行或分页),因此获取所需字体大小的一种方法是仅按所需点大小/文档点大小的倍数进行缩放。

在此 MWE 中,文档为 12pt,而我想要\Boxed10pt,因此我使用\scalebox比例为 10/12 = 0.8333

\documentclass[12pt]{article}
\usepackage{tikz}
\newlength{\LengthOfText}
\newlength{\LengthOfTextExceedingLineWidth}
\newlength{\TextWidth}
\newcommand{\Boxed}[2][]{%
    % #1 = box draw/fill options
    % #2 = text
    \settowidth{\LengthOfText}{\mbox{#2}}%
    \pgfmathsetlength{\LengthOfTextExceedingLineWidth}
        {\LengthOfText-\linewidth}
    \pgfmathsetlength{\TextWidth}{\LengthOfTextExceedingLineWidth > 0pt ? \linewidth : \LengthOfText}%
    \begin{tikzpicture}[baseline, inner sep=2pt, outer sep=0]
            \tikzstyle{every node}=[font=\small]
            \node [text width=\TextWidth, #1] (Origin) {#2};
                (Origin.south west) rectangle (Origin.north east) ;
    \end{tikzpicture}%
}
\begin{document}
Normal text in 12pt font.  \scalebox{.8333}{\Boxed[blue]{10pt font}}
\end{document}

在此处输入图片描述

相关内容