我正在使用 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,而我想要\Boxed
10pt,因此我使用\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}