showexpl
该包旨在同时显示(La)TeX,TikZ,PSTricks 代码及其对应的渲染输出(水平或垂直)。
请注意,它不能用于显示 C# 或 C++ 或 Mathematica 或其他语言及其输出,因为这些语言使用不同的编译器或渲染引擎。
showexpl
是从包派生出来的,因此可以使用或如下方式使用listings
中定义的选项。listings
showexpl
\lstset{...}
\lstset{explpreset={...}}
\lstset
{
backgroundcolor=\color{pink}
}
或者
\lstset
{
explpreset=% I add the missing = here!
{
backgroundcolor=\color{pink}
}
}
我已经阅读了该showexpl
软件包及其示例文档的源代码,但我仍然不明白它explpreset
到底是干什么用的——因为它\lstset{}
已经存在,而且它可以做它explpreset
想做的事情。以下是它的简短描述explpreset
:
你知道它explpreset
实际上是用来做什么的吗?
答案1
键explpreset
只是将其值存储到\SX@explpreset
宏中,该宏稍后将在本地使用\lstset
。这允许listings
仅为showexpl
列表定义设置,而不能为其他列表定义设置。
具体用法如下:
showexpl.dtx
,2007/02/03 v0.3h,第 251 行:
\lst@Key{explpreset}\relax{\def\SX@explpreset{#1}}
默认情况下它是空的:(第 285 行)
\newcommand*\SX@explpreset{}
然后环境使用它LTXexample
来设置本地\lstset
设置:(从第 423 行开始)
\lstnewenvironment{LTXexample}[1][]
{%
\@temptokena{#1}%
\begingroup
% \end{macrocode}
% For "codefile=..."/"graphic=..." if \cmd{\theltxexample} or
% \cmd{\thelstlisting} is part of the filename.
% \begin{macrocode}
\advance\c@ltxexample\@ne \advance\c@lstlisting\@ne
\expandafter\lstset\expandafter{\SX@explpreset,#1}%
此环境将代码写入外部文件,\SX@put@code@result
然后调用宏进行排版。此宏再次使用相同的设置:(第 457 行-)
\newcommand*\SX@put@code@result{%
\begingroup
\expandafter\lstset\expandafter{\SX@explpreset}%
答案2
使用explpreset
里面的键lstset
,您可以仅自定义环境的属性LTXexampe
,这使您能够为环境定义不同的属性lstlisting
。一个简单的例子来说明这一点:
\documentclass{article}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{showexpl}
\lstset{
explpreset={backgroundcolor=\color{yellow!30}},
backgroundcolor=\color{lightgray}
}
\begin{document}
\begin{lstlisting}
\LaTeX
\end{lstlisting}
\begin{LTXexample}
\LaTeX
\end{LTXexample}
\end{document}