由于某种原因,我被迫创建一个类似 LTXexample 的环境。
以下是我的努力,但它不起作用。:-)
我不知道如何解决这个问题。
先感谢您。
\documentclass[dvips,dvipsnames]{article}
\usepackage{xcolor}
\usepackage{listings}
\lstset{%
literate= {ï}{}0
{»}{}0
{¿}{}0,
breaklines=true,
breakindent=0pt,
basicstyle=\ttfamily\tiny,
keywordstyle=\color{blue}\sffamily\bfseries,
commentstyle=\color{OliveGreen}\itshape,
stringstyle=\rmfamily,
showstringspaces=false,
backgroundcolor=\color{Yellow!30},
language={PSTricks}%
}
\usepackage{pstricks}
\newcommand{\temporary}{}
\newenvironment{myLTXexample}%
{%
\renewcommand{\temporary}%
\bgroup\ignorespaces%
}
{%
\egroup%
\begin{minipage}{0.4\linewidth}%
\begin{lstlisting}
\temporary%
\end{lstlisting}
\end{minipage}
%
\hspace{5mm}
%
\begin{minipage}{0.4\linewidth}
\temporary
\end{minipage}
}
\begin{document}
\begin{myLTXexample}
testing.... \LaTeX !
\end{myLTXexample}
\end{document}
编辑 1:这个例子是我的真实场景的简化版本。:-)
答案1
这是使用 fancyvrb 的解决方案。前面\tabularnewline
需要 &,代码本身由 hedaer 定义读取。
\documentclass{article}
\usepackage{pstricks,fancyvrb,array,listings}
\lstset{basicstyle=\ttfamily\small}
\def\endExample{\end{VerbatimOut}
\input{\jobname.tmp}}
\newcommand\Example{%
\VerbatimEnvironment
\begin{VerbatimOut}{\jobname.tmp}}
\begin{document}
\begin{tabular}{@{} m{0.5\linewidth}@{}
>{\lstinputlisting{\jobname.tmp}}m{0.5\linewidth} @{}}
\begin{Example}
\pspicture(3,2)
\psframe*[linecolor=blue!30](3,2)
\endpspicture
\end{Example}
&
\tabularnewline
\begin{Example}
\pspicture(3,2)
\psframe*[linecolor=red!30](3,2)
\endpspicture
\end{Example}
&
\tabularnewline
\end{tabular}
\end{document}
答案2
您无法通过“供以后使用”命令收集您的列表。列表必须更改许多 catcode,并且当代码已被读取时这将不起作用(catcode 此时已修复)。您需要\scantokens
重置它们。
另外,您无法隐藏\end{lstlisting}
在某些代码中:listings 必须找到列表的结尾,而不执行中间的代码。这就是为什么 listings 有自己的\newenvironment
命令 ( \lstnewenvironment
)。
如果您想编写自己的 LTXexample,则必须复制 showexpl 的方法。基本上 LTXexample 会这样做:
\newenvironment{LTXexample}
{\lst@BeginWriteFile{\SX@codefile}} %At start of env begin to write the code to a file
{\lst@EndWriteFile % stop writing to file
%now reinput code file \SX@codefile "as listing"
%reinput code file "as result"
}