通过调整 LaTeX 中的字体大小来设置宽度?

通过调整 LaTeX 中的字体大小来设置宽度?

我正在尝试设置一个固定宽度的多行文本块,其中每行都通过调整字体大小来对齐没有断行。SILE 排字机在其specimen软件包中具有此功能。以下是 SILE 手册中的一个示例:

在此处输入图片描述

请注意,每行都完整无损,字体大小已调整至适合宽度。有类似的问题,但没有防止中断的要求。关于如何在 LaTeX 中做到这一点,有什么建议吗?

答案1

虽然确实可以使用类似的东西,但\obeylines我发现使用tabular带有明确结构的 -like 构造更容易\\

\documentclass{article}

\usepackage{array}
\usepackage{graphicx}
\usepackage{libertine}% just as example

\newenvironment{scaletowidth}[1]%
{%
 \tabular{@{}
          >{\setbox0=\hbox\bgroup}
          l
          <{\egroup\resizebox{#1}{!}{\box0}}
          @{}
         }%
}{\endtabular}

\begin{document}

\begin{scaletowidth}{4cm}
CAPERCALLIE\\
LAMMERGEYERHOFEN\\
CASSOWARY\\
ACCENTOR DOWITCHER DOTTEREL
\end{scaletowidth}

\end{document}

在此处输入图片描述


或者,不需要显式的版本\\。这会导致垂直间距略有不同。

\documentclass{article}

\usepackage{graphicx}
\usepackage{libertine}% just as example

\newenvironment{scaletowidth}[1]%
{%
 \begingroup
 \lccode`\~=`\^^M
 \lowercase{%
    \endgroup
    \def~{%
       \def~{%
          \egroup%
          \endgraf%
          \strut\resizebox{#1}{!}{\box0}%
          \setbox0=\hbox\bgroup%
        }%
        \setbox0=\hbox\bgroup%
    }%
 }%
 \catcode`\^^M=\active
}{\egroup}

\begin{document}

\begin{scaletowidth}{4cm}
CAPERCALLIE
LAMMERGEYERHOFEN
CASSOWARY
ACCENTOR DOWITCHER DOTTEREL
\end{scaletowidth}

\end{document}

我没有发布更多图片,因为你不会注意到差异。(但,即使很小。)

相关内容