在 Node 中自动调整文本大小

在 Node 中自动调整文本大小

我正在尝试自动调整出现在几个节点中的文本的大小。基本上,如果文本太大(超出水平框等),则将字体大小设置得较小并继续。有人知道怎么做吗?

为什么是自动修复而不是手动修复?我们的想法是,此文档将自动填充,并在其上运行 latex,然后显示生成的文档。这样的文档数量会很多,因此手动修复是不可行的。

答案1

下面给出了一种可能的方法的示意图:

\documentclass[12pt]{article}

\usepackage{tikz}
%scalebox needs graphicx
\usepackage{graphicx}
%settototalheight uses calc
\usepackage{calc}
%define some lengths
\newlength\nodeheight
\setlength{\nodeheight}{1cm}

\newlength\nodewidth
\setlength{\nodewidth}{3cm}

\newlength\myboxheight

\begin{document}
%create a box which will contain text you want to put in
\newsavebox{\mybox}
\sbox{\mybox}{\parbox{\nodewidth}{Ceterum censeo Carthaginem esse delendam}}
%measure its height
\settototalheight\myboxheight{\mybox}
%calculate the ratio of box’s height and available space in node
\pgfmathparse{\myboxheight/\nodeheight}

\centering
\begin{tikzpicture}
%resize your box to fit inside node; keep width-to-height ratio using !, and resize height as necessary
\node [rectangle, minimum width=\nodewidth, minimum height=\nodeheight, draw=black] {\resizebox{!}{\pgfmathresult\nodeheight}{\usebox{\mybox}}};
\end{tikzpicture}

\bigskip

%here is the original box, which is too big:
\usebox{\mybox}
\end{document}

结果:

比例盒

这远非理想——请注意,如果我适当调整文本的大小而不是包含文本的框的大小,文本可能会更大。

相关内容