需要在 mdframed 信息框中左对齐引用图像

需要在 mdframed 信息框中左对齐引用图像

我已经成功使用 mdframed 包创建了一组警告、注释和信息框,它们看起来非常好。但是,我需要将插入的图像左对齐,而不是将其放在文本上方、框架标题下方的单独一行上。

事实上,这个问题(以及出色的答案!)让我走到了现在的位置:带有图像和文本的圆角框。但是,我需要按照第一段所述修改结果框(图像左对齐,文本右对齐,但框架标题位于图像上方)。这是我目前所拥有的(我希望它是 MWE,因为我不确定如何在此示例中引用外部图像):

\documentclass[a4paper,11pt]{article}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{lipsum}% Used for dummy text.

\definecolor{warning}{RGB}{255,231,231}

% Definition for Warning Boxes                     
\mdfdefinestyle{warn}{roundcorner=10pt,
  skipabove=10pt
  skipbelow=10pt
  leftmargin=20pt,
  rightmargin=20pt,
  backgroundcolor=warning,
  innertopmargin=10pt,
  innerbottommargin=10pt,
  innerleftmargin=10pt,
  middlelinewidth=0pt,
  everyline=true,f
  linecolor=warnline,
  font=\normalfont\normalsize,
  shadow=true,
  frametitlefont=\normalfont\normalsize\bfseries,
  frametitleaboveskip=1em,
}                      

\begin{document}

\begin{mdframed}[style=warn, frametitle=Warning]
\includegraphics[scale=0.50]{<path>/<icon>} \\ Important warning not to be missed.
\end{mdframed}

\end{document}

同样重要的是,我可以通过简单的一行插入此警告说明,例如

\begin{warning}
This is the warning text.
\end{warning}

提前感谢你的帮助。

答案1

您只需修改正在使用的设置并利用放置标题和图像即可实现您想要的singleextra效果firstextra

请注意,您有默认值framemethod,因此您的某些设置会被默默忽略;为了防止这种情况,我将其更改为framemethod=tikz(我还定义了warnline原始代码中缺少的颜色)。

我没有像在代码中那样定义样式,而是使用 定义了一个环境\newmdenv;这样您就可以简单地使用所需的语法:

\begin{warn}
text
\end{warn}

代码(根据您的特定需要调整长度):

\documentclass[a4paper,11pt]{article}
\usepackage[demo]{graphicx}
\usepackage{xcolor}
\usepackage[framemethod=tikz]{mdframed}
\usepackage{lipsum}% Used for dummy text.
\usetikzlibrary{shadows}

\definecolor{warning}{RGB}{255,231,231}
\definecolor{warnline}{RGB}{155,231,231}

% Definition for Warning Boxes                     
\newmdenv[
  roundcorner=10pt,
  skipabove=10pt
  skipbelow=10pt
  leftmargin=20pt,
  rightmargin=20pt,
  backgroundcolor=warning,
  innertopmargin=30pt,
  innerbottommargin=10pt,
  innerleftmargin=70pt,
  middlelinewidth=0pt,
  everyline=true,
  linecolor=warnline,
  font=\normalfont\normalsize,
  shadow=true,
  frametitlefont=\normalfont\normalsize\bfseries,
  frametitleaboveskip=1em,
  singleextra={
    \node[inner sep=0pt,anchor=north west,xshift=10pt,yshift=-30pt] at (P-|O) {\includegraphics[width=1.8cm,height=1.8cm]{<path>/<icon>}};
    \node[inner sep=0pt,anchor=north west,yshift=-.8\baselineskip,font=\bfseries,xshift=10pt] at (P-|O) {Warning};    
  },
  firstextra={
    \node[inner sep=0pt,anchor=north west,xshift=10pt,yshift=-30pt] at (P-|O) {\includegraphics[width=1.8cm,height=1.8cm]{<path>/<icon>}};
    \node[inner sep=0pt,anchor=north west,yshift=-.8\baselineskip,font=\bfseries,xshift=10pt] at (P-|O) {Warning};    
  }
]{warn}                     

\begin{document}

\begin{warn}
\lipsum[4]
\end{warn}

\end{document}

在此处输入图片描述

选项demo只是graphicx用黑色矩形替换实际图形;不是在实际文档中使用该选项。

答案2

我将在环境中使用两个小页面mdframed。我还使用 将框的标题居中frametitlealignment=\centering。所有这些都包装在一个新\warning命令中。完整代码:

\documentclass[a4paper,11pt]{article}
\usepackage[demo]{graphicx}% remove demo option, it is just to have a dummy black rectangle as figure
\usepackage{xcolor}
\usepackage{lipsum}% Used for dummy text.
\usepackage{mdframed}
\usepackage{calc}

\definecolor{warning}{RGB}{255,231,231}

% Definition for Warning Boxes
\mdfdefinestyle{warn}{roundcorner=10pt,
  skipabove=10pt
  skipbelow=10pt
  leftmargin=20pt,
  rightmargin=20pt,
  backgroundcolor=warning,
  innertopmargin=10pt,
  innerbottommargin=10pt,
  innerleftmargin=10pt,
  middlelinewidth=0pt,
  everyline=true,
  linecolor=warning,
  font=\normalfont\normalsize,
  shadow=true,
  frametitlefont=\normalfont\normalsize\bfseries,
  frametitleaboveskip=1em,
  frametitlealignment=\centering
}

\newcommand{\warning}[1]{%
  \begin{mdframed}[style=warn, frametitle=Warning]
  \begin{minipage}[c]{2cm}
    \includegraphics[width=2cm,height=2cm]{test}
  \end{minipage}%
  \hspace*{0.5cm}%
  \begin{minipage}[c]{\textwidth-2.5cm}
  #1\end{minipage}
  \end{mdframed}
}

\begin{document}
\warning{Important warning not to be missed. Text text text text text text 
  text text text text text text text text text text text text text.}
\end{document}

给出:

示例输出

最后说明:请确保您的 MWE 可编译。您问题中的代码存在一些问题。

相关内容