Как сделать серую коробочку с помощью тикс - PullRequest
5 голосов
/ 02 августа 2010

Это следующий вопрос здесь . Мне нужно сделать круглую серую коробку, как показано на рисунке.

http://img707.imageshack.us/img707/9705/screenshot20100718at913.png

Судя по ответам, я что-то пробовал, но не так плодотворно. Итак, еще одни вопросы.

Я придумал следующую команду, но она не работает. Дословно внутри мини-страницы не компилируется.

\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}
}

Я также пытался с окружающей средой, которая также не работает. Министраница не находится внутри министраницы.

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

Вопросы

  • Что не так с кодом LaTeX? Как я могу использовать дословную среду с мини-страницей в tikzpicture?
  • Не могли бы вы научить меня лучшему способу реализации среды в сером ящике, как показано на прилагаемом рисунке?

Это весь код, и я приложил скомпилированный результат к скомпилированному результату.

http://a.imageshack.us/img571/7828/screenshot20100802at148.png

\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}

1 Ответ

5 голосов
/ 03 августа 2010

Я задал тот же вопрос LaTeX Community , и я получил следующий ответ от Хуанхо.

http://a.imageshack.us/img821/290/screenshot20100802at706.png

\documentclass[a4paper]{article}

\usepackage{tikz}
\usepackage{lipsum}

\newlength{\RoundedBoxWidth}
\newsavebox{\GrayRoundedBox}
\newenvironment{GrayBox}[1][\dimexpr\textwidth-4.5ex]%
   {\setlength{\RoundedBoxWidth}{\dimexpr#1}
    \begin{lrbox}{\GrayRoundedBox}
       \begin{minipage}{\RoundedBoxWidth}}%
   {   \end{minipage}
    \end{lrbox}
    \begin{center}
    \begin{tikzpicture}%
       \draw node[draw=black,fill=black!10,rounded corners,%
             inner sep=2ex,text width=\RoundedBoxWidth]%
             {\usebox{\GrayRoundedBox}};
    \end{tikzpicture}
    \end{center}}

\begin{document}

\lipsum[1]

\begin{GrayBox}
  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{GrayBox}

\lipsum[2]

\begin{GrayBox}[0.75\textwidth]
  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{GrayBox}

\lipsum[3]

\end{document}
...