2016-04-02 2 views
2

Я использую следующий код, чтобы создать поле для уравнений. Он использует Tikz для создания окна.Добавить объявление в tikzpicture

\documentclass[a4paper]{article} 
\usepackage{tikz} 
\usepackage{amsmath} 
\usepackage{amsmath,amssymb}%  pour les maths 
\usepackage{enumitem} 
\usepackage{varwidth} 
\usepackage{listings} 
\usetikzlibrary{calc} 

\newcommand{\mybox}[4][\textwidth-\pgfkeysvalueof{/pgf/inner xsep}-2mm]{% 
\begin{figure}[!h] 
\centering 
\begin{tikzpicture} 
\node[line width=.5mm, rounded corners, draw=#2, inner ysep=10pt, text width=#1, outer sep=0] (one) {\vspace*{15pt}\\\begin{varwidth}{\textwidth}#4\end{varwidth}}; 
\node[text=white,anchor=north east,align=center, minimum height=20pt] (two) at (one.north east) {#3 \hspace*{.5mm}}; 
\path[fill=#2] 
    (one.north west|-two.west) -- 
    ($(two.west)+(-1.5cm,0)$) 
    to[out=0,in=180] (two.south west) -- 
    (two.south east) [rounded corners] -- 
    (one.north east) -- 
    (one.north west) [sharp corners] -- cycle; 
\node[text=white,anchor=north east,align=center, minimum height=20pt, text height=2ex] (three) at (one.north east) {#3 \hspace*{.5mm}}; 
\end{tikzpicture} 
\end{figure} 
} 

\begin{document} 
\mybox{green!70!black}{The Caption}{ 
\begin{enumerate} 
\item Show that\\ 
$\displaystyle D_2f(x,y) = \frac{\partial {}}{\partial{y}} \biggl(\int_0^xg_1 (t,0) \ dt + \int_0^y g_2(x,s) \ ds \biggr)$ 
\item prove that\\ 
$\displaystyle \biggl(\forall x\in\mathbb{R} \biggr)\biggl(\forall y \in \mathbb{R} \biggr) x\neq y\, \text{ and } \, x+y \neq 2 \implies x^{2}-2x \neq y^2-2y$ 
\end{enumerate} 

} 
\end{document} 

, но сейчас я хочу, чтобы поместить листинг внутри коробки Когда я положил список внутри Mbox я получил ошибку

\begin{lstlisting}[language=R] 
fun1 <- function(data, data.frame, graph=TRUE, limit=20, ...) { 
[omitted statements] 
if (graph) 
par(pch="*", ...) 
[more omissions] 
} 
\end{lstlisting} 

ошибка

! Argument of \[email protected] has an extra }. 

ответ

0

Вы не можете использовать списки внутри аргументов напрямую. Вам либо нужно убежать, либо правильно подготовить дословный код, либо сохранить его где-то в другом месте. Дополнительную информацию см. В разделе 6.1 из the listing manual.

Храните список в окне

\begin{document} 
\begin{lrbox}{\mylisting} 
\begin{lstlisting}[language=R] 
fun1 <- function(data, data.frame, graph=TRUE, limit=20, ...) { 
[omitted statements] 
if (graph) 
par(pch="*", ...) 
[more omissions] 
} 
\end{lstlisting} 
\end{lrbox} 

\mybox{green!70!black}{The Caption}{ 
    \usebox\mylisting 
} 
\end{document} 

Храните список во внешнем файле

\lstinputlisting{external_file.R} 

Добавить линия питает ^^J

\begin{lstlisting}[language=R]^^J 
fun1 <- function(data, data.frame, graph=TRUE, limit=20, ...) {^^J 
[omitted statements]^^J 
if (graph)^^J 
par(pch="*", ...)^^J 
[more omissions]^^J 
}^^J 
\end{lstlisting} 

enter image description here

Примечание: Вам, вероятно, потребуется изменить размер вашей коробки для этой длинной первой строки кода.

Смежные вопросы