调整框大小以适合文本

调整框大小以适合文本

我希望有一个根据其中的文本改变宽度的框。较短的句子应该有一个较窄的框,随着句子变长,框应该变大(直到它和文本一样宽,然后我想要一个换行符)。字体大小不应受到影响。到目前为止,我得到的最佳解决方案(见下文)是在文本较短时缩放文本。

\ovalbox{
  \begin{minipage}[t]{0.85\columnwidth}
  \resizebox{\textwidth}{!}{Some variable-length text}
  \end{minipage}
}

答案1

您可以使用以下\fbox命令在文本周围添加一个框架:

\fbox{text}

要将文本放入椭圆中,可以使用TikZ/PGF包及其shapes.geometric库:

\documentclass{article}

\usepackage{tikz}

\usetikzlibrary{shapes.geometric}

\begin{document}

% You can also make a \newcommand for this
\tikz[baseline=(e.base)] \node[ellipse,draw] (e) {text};

\end{document}

在此处输入图片描述

请注意,在这两种情况下,文本相对于段落而言都充当一个“大”框,并且将不会被分成几行。

如果您希望在框架中排版整个段落,并且如果段落适合一行则不会扩展为全行宽度,那么以下方法(受启发\@makecaption)可能会实现:

\documentclass{article}

\usepackage{lipsum}

\makeatletter
\newcommand{\varbox}[1]{%
  \setlength{\@tempdima}{\dimexpr\textwidth-2\fboxsep-0.8pt\relax}%
  \sbox{\@tempboxa}{#1}%
  \ifdim\wd\@tempboxa>\@tempdima
    \fbox{\parbox{\@tempdima}{\strut #1}}%
  \else
    \fbox{\strut #1}%
  \fi}
\makeatother

\begin{document}

\lipsum[1]

\noindent\varbox{\lipsum[2]}

\noindent\varbox{not too much text}

\end{document}

对于我来说,在椭圆内排版大块内容似乎不太实际。

答案2

您也可以看看varwidth包裹。它允许定义一个{varwidth}行为类似于{minipage}但需要最大限度宽度作为参数。

\documentclass{article}

\usepackage{varwidth}

% just for this demo
\usepackage{parskip}

\begin{document}
\fbox{%
    \begin{varwidth}{0.8\textwidth}%
    Text
    \end{varwidth}%
}

Text that deomenstrates the \verb|\textwidth|, an for that is
longer than one line or maybe two.

\fbox{%
    \begin{varwidth}{0.8\textwidth}%
    Very long text, that breaks a line.
    Very long text, that breaks a line.
    Very long text, that breaks a line.
    \end{varwidth}%
}
\end{document}

结果

答案3

您还应该考虑包裹mdframed。如果您有大段文字,这实际上可以跨分页符工作,并且在线条样式、填充颜色等方面具有很大的灵活性......

在此处输入图片描述

\documentclass{article}
\usepackage[framemethod=TikZ]{mdframed}

\begin{document}
\begin{mdframed}[roundcorner=15pt, linecolor=red, outerlinewidth=2pt,backgroundcolor=yellow!30]
  \begin{minipage}[t]{0.85\columnwidth}
  \resizebox{\textwidth}{!}{Some variable-length text}
  \end{minipage}
\end{mdframed}
\end{document}

相关内容