使用 mdframed 将文本紧密地框起来

使用 mdframed 将文本紧密地框起来

您知道如何强制 mdframed 更紧密地框住文本吗?看起来,它只是框住整行。但我的目标是只框住文本,这样完成的框将根据文本具有不同的宽度。如果您看一下图片,您就会明白我的意思。非常感谢您的帮助!

\mdfdefinestyle{MyFrame}{%
    linecolor=black,
    outerlinewidth=2pt,
    %roundcorner=20pt,
    innertopmargin=4pt,
    innerbottommargin=4pt,
    innerrightmargin=4pt,
    innerleftmargin=4pt,
        leftmargin = 4pt,
        rightmargin = 4pt
    %backgroundcolor=gray!50!white}
        }

% text
\begin{mdframed}[style=MyFrame,nobreak=true]
\begin{center}
\textbf{THIS TEXT SHOULD BE MORE TIGHTLY FRAMED }
\end{center}
\end{mdframed}

% sipka
\begin{figure}[h!]
\centering
\includegraphics[width=.1\textwidth]{sipka3.pdf}
\end{figure}
% arrow
\begin{mdframed}[style=MyFrame,nobreak=true]
\lipsum[2]
\end{mdframed}

% sipka
\begin{figure}[h!]
\centering
\includegraphics[width=.1\textwidth]{sipka3.pdf}
\end{figure}
% arrow
\begin{mdframed}[style=MyFrame,nobreak=true]
\lipsum[1]
\end{mdframed}

在此处输入图片描述

答案1

您可以使用mdframed选项align=center,userdefinedwidth=...

在此处输入图片描述

\documentclass{article}
\usepackage{mdframed,lipsum}
\begin{document}
\mdfdefinestyle{MyFrame}{%
    linecolor=black,
    outerlinewidth=2pt,
    %roundcorner=20pt,
    innertopmargin=4pt,
    innerbottommargin=4pt,
    innerrightmargin=4pt,
    innerleftmargin=4pt,
        leftmargin = 4pt,
        rightmargin = 4pt
    %backgroundcolor=gray!50!white}
        }

% text
\lipsum[1]
\begin{mdframed}[style=MyFrame,nobreak=true,align=center,userdefinedwidth=30em]
\textbf{THIS TEXT SHOULD BE MORE TIGHTLY FRAMED}
\end{mdframed}
\lipsum[2]
\end{document}

答案2

为了改进 gernot 的答案,您可以使用calc包自动计算出所需的宽度,即

\documentclass{article}
\usepackage{mdframed,lipsum,calc}
\begin{document}
\mdfdefinestyle{MyFrame}{%
    linecolor=black,
    outerlinewidth=2pt,
    %roundcorner=20pt,
    innertopmargin=4pt,
    innerbottommargin=4pt,
    innerrightmargin=4pt,
    innerleftmargin=4pt,
        leftmargin = 4pt,
        rightmargin = 4pt
    %backgroundcolor=gray!50!white}
        }

\newcommand\header[1]{
  \newlength{\headerwidth}
  \setlength{\headerwidth}{\widthof{#1}}
  \addtolength{\headerwidth}{8pt}
  \begin{mdframed}[style=MyFrame,nobreak=true,align=center,userdefinedwidth=\headerwidth]
    #1
  \end{mdframed}
}


% text
\lipsum[1]
\header{\textbf{THIS TEXT SHOULD BE MORE TIGHTLY FRAMED}}
\lipsum[2]
\end{document}

我将环境放在一个新命令中,因为我需要两次使用它的内容。我8pt手动添加,因为我不确定如何从样式中提取innerleftmargininnerrightmargin。尝试使用不同的文本字符串,它似乎无法正确处理边距;我不知道为什么。在我自己的代码中,我只是在文本中添加了一个额外的内容\qquad来考虑边距。

相关内容