我想将多行文本缩放到可用的文本宽度。我在这里发现了一些东西:pgfplots:如何缩放到文本宽度?和这里:https://stackoverflow.com/questions/3106587/scale-an-equation-to-fit-exact-page-width而且,也可能是最有希望的:如何将 tikzpicture 缩放到 \textwidth
我还想将单词缩放到文本宽度以制作一个非常简单的海报,我正在执行以下操作:
\centering\noindent\resizebox{\textwidth}{!}{Queue here!}
但这对于多行解决方案不起作用,即
\centering\noindent\resizebox{\textwidth}{!}{Queue\\here!}
会导致错误:
!LaTeX 错误:出现错误 — — 可能缺少 \item。
请参阅 LaTeX 手册或 LaTeX Companion 了解解释。输入 H 可立即获得帮助。...
l.12 ...ent\resizebox{\textwidth}{!}{Queue\here!}
请注意,如果文本的高度大于宽度,则上述代码将无法按预期工作,即
\centering\noindent\resizebox{\textwidth}{!}{!}
感叹号无法在页面上容纳,因为它会变得太高,超出页面的范围。
正如所提到的如何将 tikzpicture 缩放到 \textwidth我也尝试了adjustbox包。但是,下面的代码没有按预期工作,原因有两个:首先,它不会换行,其次,它使文本超出右边界(根据使用geometry包和showframe作为参数的论文编译)。
\minsizebox{\textwidth}{!}{foo\\bar}
现在,我正在寻找一种解决方案,可以让我制作多行海报类型的文档而不浪费空间,即使其尽可能大。显然,我想像平常一样切换纸张,即只需在文档中的某个位置将“a4paper”更改为“a3paper”即可。
理想情况下,有一个通用的解决方案可以将所有内容(包括图形等)缩放到页面上。在我的用例场景中,假设页面上没有其他内容是非常合理的。理想的解决方案也适用于上述感叹号等极端情况。
FWIW:这是我目前拥有的代码:
\documentclass[landscape]{minimal}
\usepackage[showframe,a4paper]{geometry}
\newcommand{\vstretch}[1]{\vspace*{\stretch{#1}}}
\usepackage{adjustbox}
\begin{document}
\topskip0pt
\vstretch{1}
\minsizebox{\textwidth}{!}{foo\\bar}
%\centering\noindent\resizebox{\textwidth}{!}{!}%
\vstretch{1}
\end{document}
到目前为止,我的后备工作流程大致如下:
创建一个简单的文档,使用 pdfcrop,然后使用 pdfnup --nup 1x1 来放大它。
答案1
问题是大多数多行构造都将当前线宽作为最终宽度,因此重新缩放它们没有任何意义。但是,您可以尝试使用\resizebox
类似
\begin{tabular}{@{}c@{}}
foo\\
bar
\end{tabular}
并且应该有合理的成功机会(消除@{}
正常的每列填充)。
答案2
\documentclass[landscape,a4paper]{article}
\usepackage{varwidth,graphicx}
\begin{document}
\setkeys{Gin}{keepaspectratio}
\noindent\resizebox*\textwidth\textheight{\begin{varwidth}{\textwidth}%
hello%
\end{varwidth}}
\noindent\resizebox*\textwidth\textheight{\begin{varwidth}{\textwidth}%
foo\\ bar%
\end{varwidth}}
\noindent\resizebox*\textwidth\textheight{\begin{varwidth}{\textwidth}%
aaa\[1=2\]bbb
\begin{enumerate}
\item foo
\item bar
\end{enumerate}%
\end{varwidth}}
\end{document}