虚线框环境

虚线框环境

我是 LaTeX 新手,尝试创建虚线框环境时遇到了困难,但没有成功。有人可以分享一个虚线框环境的代码吗(如图所示)?

我想按以下方式使用它:

My Elaboration
\begin{elaboration}{My item list is shown below:}
  \item dummy item
  \item dummy item 2
  \item dummy item 3
\end{elaboration}

顺便问一下,相同环境的代码怎么会是连续的框(不是虚线)呢?提前谢谢!

答案1

欢迎,这个问题问得好。我不知道有哪个 LaTeX 软件包可以轻松完成你想要的开箱即用任务。fancybox包装上有很多漂亮的盒子(自然的),但周围没有虚线。

原因可能是 TeX 没有绘制虚线/点线的原生机制,只有实线。因此,要创建虚线,需要计算虚线的数量并绘制每一条虚线。

LaTeX 的内置picture环境可以做到这一点,但我从未对此进行过多了解。TikZ 可以做到这一点:

\documentclass{article}
\usepackage{environ}
\usepackage{tikz}

\NewEnviron{elaboration}{
\par
\begin{tikzpicture}
\node[rectangle,minimum width=0.9\textwidth] (m) {\begin{minipage}{0.85\textwidth}\BODY\end{minipage}};
\draw[dashed] (m.south west) rectangle (m.north east);
\end{tikzpicture}
}


\begin{document}
My Elaboration
\begin{elaboration}
{My item list is shown below:}
\begin{itemize}
  \item dummy item
  \item dummy item 2
  \item dummy item 3
\end{itemize}
\end{elaboration}

\end{document}

示例代码输出

通过使用装饰来绘制形状的边框,从而将其减少到一行 TikZ,可能可以对 TikZ 代码进行改进。但由于您只需要一条虚线,因此这就可以了。您可以尝试各种设置以获得所需的分隔或使其可自定义。

答案2

这里有一个基于我的adjustbox包和的解决方案,dashbox它提供了\dbox\dashbox。它们的工作原理类似于\fbox和,\framebox但带有虚线。

\documentclass{article}
\usepackage{adjustbox}
\usepackage{dashbox}

\begin{document}
\noindent
My Elaboration

\begin{adjustbox}{minipage=0.85\textwidth,precode=\dbox}
My item list is shown below:
\begin{itemize}
  \item dummy item
  \item dummy item 2
  \item Verbatim: \verb+\section+
\end{itemize}
\end{adjustbox}

\end{document}

答案3

无需加载大包:

\documentclass{article}
\usepackage{arydshln,paralist}
\makeatletter
\newenvironment{elaboration}[1]
  {\par\tabular{:p{\linewidth}:}\hdashline
   \rule{0pt}{4ex}#1\\
   \compactitem}
  {\endcompactitem\\\hdashline\endtabular}
\makeatother

\begin{document}

\begin{elaboration}{My item list is shown bellow:}
  \item dummy item
  \item dummy item 2
  \item dummy item 3
\end{elaboration}

\end{document}

答案4

这里还有另一种使用包的解决方案tcolorbox。创建的虚线框是可破坏的:

\documentclass{article}
\usepackage[many]{tcolorbox}

\newtcolorbox{elaboration}[2][]{%
  enhanced,breakable,frame hidden,interior hidden,
  arc=0pt,outer arc=0pt,borderline={0.4pt}{0pt}{dashed},
  before upper={#2\begin{itemize}},after upper={\end{itemize}}
}

\begin{document}
\noindent My Elaboration
\begin{elaboration}{My item list is shown below:}
  \item dummy item
  \item dummy item 2
  \item dummy item 3
\end{elaboration}

\begin{elaboration}{My item list is shown below:}
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
  \item dummy item
\end{elaboration}

\end{document}

在此处输入图片描述 在此处输入图片描述

相关内容