我正在寻找与 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}