自动调整文本大小以完美适应其范围

自动调整文本大小以完美适应其范围

我正在寻找与 simc/auto_size_text 相同的功能,这是一个 Flutter 小部件,可以自动调整文本大小以完美适应其界限。

但是,我希望能够针对各种尺寸的实体印刷抽认卡实现这一点。特别是 A6 纸,但最好有一个可以针对不同页面尺寸(从 A4 到名片)进行更改的模板。

\fillpage{}
\resizebox{\textwidth}{!}{
?
?

LaTex 能做到这一点吗?要搜索什么命令,或者我应该开始编写 Python 脚本以直接转到 pdf?

答案1

fitting来自的图书馆tcolorbox可用于使文本适合框。下面是一个最小示例;请参阅tcolorbox文档以了解如何调整框的其他属性。纸张大小可通过geometry包设置。

笔记:该库永远不会自行增加文本大小。相反,您需要指定一个已知过大的基本字体大小,之后该库会将其缩小以适应。(您可以通过\tcbset{fit basedim=35pt}从下面的代码中删除该行来比较效果。)

\documentclass{article}
\usepackage{fix-cm}  % Allow arbitrary font scaling for Computer Modern
\usepackage[margin=0.25in]{geometry}  % Just so that the examples fit on the same page
\usepackage{tcolorbox}
\tcbuselibrary{fitting}
\usepackage{lipsum} % Just for dummy text

\begin{document}

\tcbset{fit basedim=35pt}  % tcb doesn't enlarge text; it starts with this base dimensional and shrinks text to fit
    % So if you need the font to possibly scale __up__ you need to specify a larger size to boot. 

\tcboxfit[height=5.8in,width=4.1in]{\lipsum[1]}  % A6 size, portrait

\tcboxfit[width=5.8in,height=4.1in]{\lipsum[2]}  % A6 size, landscape

\end{document}

在此处输入图片描述

答案2

另一种可能性是使用shapepar和...一起\resizebox

注意事项

  • \resizebox前两个参数是“width”和“height”;但是\shapepar's\rectangleshape先是“height”,然后是“width”。准备文档时要小心。
  • \shapepar只能,正如其名称所暗示的那样,形成一个段落。所以没有显示数学(内联数学是可以的)或任何调整垂直间距的东西。
  • \Shapepar\par适用于整个段落;如果用 包装该段落,则需要确保该段落已经终止(通过空行或) \resizebox

代码:

\documentclass{article}
\usepackage[margin=0.25in]{geometry}
\usepackage{shapepar}   % Use shapepar to build the correct shape of text block
\usepackage{graphicx}   % Use resizebox to scale it to the right size
\usepackage{lipsum}

\begin{document}

% Note that \Shapepar requires the paragraph to be terminated. 
% This means we must include either a blank line or a \par.
\resizebox{5.8in}{!}{\Shapepar{\rectangleshape{4.1}{5.8}} \lipsum[1]\par}

\resizebox{4.1in}{!}{\Shapepar{\rectangleshape{5.8}{4.1}} \lipsum[2]\par}
\end{document}

在此处输入图片描述

相关内容