5

This is a follow-up question asked here. I need to make a round-grayed box as is shown.

Based on the answers, I tried something, but not so fruitful. So, another questions coming.

I came up with the following command, but it doesn't work. The verbatim inside the minipage doesn't compile.

\newcommand{\graybox}[1]{%
\noindent\begin{tikzpicture}%
  \draw node[draw=black,fill=black!10,rounded corners,inner sep=2ex,text width=\mytikzwidth] {%
  #1
  };%
\end{tikzpicture}%
}%

%% ERROR - verbatim doesn't work. 
\graybox{%
\begin{minipage}[b]{\mytikzwidth}
...
\begin{verbatim}
java -cp \$CLOJUREJAR:\$CLASSPATH clojure.lang.Script \$1
\end{verbatim}
...
\end{minipage}
}

I also tried with the environment, which also doesn't work. The minipage isn't sit inside the minipage.

\newenvironment{grayboxx}%
{\noindent\begin{tikzpicture}%
  \draw node[draw=black,fill=black!10,rounded corners,inner
  sep=2ex,text width=\mytikzwidth] {%
}%
{};%
\end{tikzpicture}%
}

Questions

  • What's wrong with the LaTeX code? How can I use verbatim environment with minipage in the tikzpicture?
  • Could you teach me a better way to implement the grayboxed environment as is shown in the attached picture?

This is the whole code, and I attached the compiled result with the compiled result.

\documentclass{article}

\usepackage{tikz}

\newlength{\mytikzwidth}
\setlength{\mytikzwidth}{\textwidth}
\addtolength{\mytikzwidth}{-4ex} % this 10ex is just rule of thumb.

\newcommand{\graybox}[1]{%
\noindent\begin{tikzpicture}%
  \draw node[draw=black,fill=black!10,rounded corners,inner sep=2ex,text width=\mytikzwidth] {%
  #1
  };%
\end{tikzpicture}%
}%

\newenvironment{grayboxx}%
{\noindent\begin{tikzpicture}%
  \draw node[draw=black,fill=black!10,rounded corners,inner
  sep=2ex,text width=\mytikzwidth] {%
}%
{};%
\end{tikzpicture}%
}

\begin{document}

%%%% CASE 1 - OK
\begin{minipage}[b]{\mytikzwidth}
clj command is as follows.

\begin{verbatim}
java -cp \$CLOJUREJAR:\$CLASSPATH clojure.lang.Script \$1
\end{verbatim}

hello.clj needs a namespace (ns) to let the modules know about this code.
\end{minipage}

%%%% CASE 2 - not working with verbatim
\graybox{%
\begin{minipage}[b]{\mytikzwidth}
clj command is as follows.

%\begin{verbatim}
java -cp \$CLOJUREJAR:\$CLASSPATH clojure.lang.Script \$1
%\end{verbatim}

hello.clj needs a namespace (ns) to let the modules know about this code.
\end{minipage}
}

%%%% CASE 3 - not inside the tikz
\begin{grayboxx}
\begin{minipage}[b]{\mytikzwidth}
clj command is as follows.

%\begin{verbatim}
java -cp \$CLOJUREJAR:\$CLASSPATH clojure.lang.Script \$1
%\end{verbatim}

hello.clj needs a namespace (ns) to let the modules know about this code.
\end{minipage}
\end{grayboxx}

\end{document}
4

1 回答 1

6

我向LaTeX Community提出了同样的问题,我从 Juanjo 那里得到了以下答案。

\documentclass[a4paper]{文章}

\使用包{tikz}
\usepackage{lipsum}

\newlength{\RoundedBoxWidth}
\newsavebox{\GrayRoundedBox}
\newenvironment{GrayBox}[1][\dimexpr\textwidth-4.5ex]%
   {\setlength{\RoundedBoxWidth}{\dimexpr#1}
    \begin{lrbox}{\GrayRoundedBox}
       \begin{minipage}{\RoundedBoxWidth}}%
   { \结束{小页面}
    \结束{lrbox}
    \开始{中心}
    \开始{tikzpicture}%
       \draw node[draw=black,fill=black!10,圆角,%
             内部 sep=2ex,文本宽度=\RoundedBoxWidth]%
             {\usebox{\GrayRoundedBox}};
    \结束{tikzpicture}
    \结束{中心}}

\开始{文档}

\lipsum[1]

\开始{灰盒}
  clj 命令如下。
  \开始{逐字}
  java -cp \$CLOJUREJAR:\$CLASSPATH clojure.lang.Script \$1
  \结束{逐字}
  hello.clj 需要一个命名空间(ns)来让模块
  了解此代码。
\end{灰盒}

\lipsum[2]

\begin{GrayBox}[0.75\textwidth]
  clj 命令如下。
  \开始{逐字}
  java -cp \$CLOJUREJAR:\$CLASSPATH
  clojure.lang.Script \$1
  \结束{逐字}
  hello.clj 需要一个命名空间(ns)来让模块
  了解此代码。
\end{灰盒}

\lipsum[3]

\结束{文档}
于 2010-08-03T00:07:33.523 回答