定义我自己的“盒子”?

定义我自己的“盒子”?

我想要的是一个可以让我创建自己的“盒子”(或块?我总是混淆它们......)的环境,具有以下属性

  1. 它们以视觉方式将一段源代码和一段解释(可能是数学公式)结合在一起
  2. 它们以某种方式被索引和命名,这样我就可以将它们列在某个中央目录中

为了感受一下我想在盒子里放置什么:

\lstinputlisting[language=C++,basicstyle=\small]{fragments/leda-math-linear-solver.cpp}
\begin{equation}matrix * (x * x\_factor) = right\end{equation}

所以基本上我想把 a\lstinputlisting和 a\begin{equation} ... \end{equation}粘合在一起。但我宁愿不要太纠结于方程式,因为我可能想用其他解释而不是方程式来解释某些源代码。

我尝试了几次,试图解决 1),方法是摆弄我找到的答案这里,尤其是 mdframed 包。但是我该如何定义自己的命令以避免一遍又一遍地重复样式标记呢?

对于 2),我考虑过搭载定理系统。这是一种可行的方法吗?

(抱歉,我可能把乳胶术语搞混了。我目前正在深入学习整个系统的好处,并掌握一切对我来说有用的东西。)

答案1

\jobname.tex用你的 cpp 示例文件替换

\documentclass{article}
\usepackage{listings}
\renewcommand\lstlistingname{Example}
\renewcommand\lstlistlistingname{Examples}

\newcommand\myExa[3][]{%
\lstinputlisting[language=C++,basicstyle=\small,#1]{#2}
  #3}
\begin{document}

\myExa[label=foo,caption=foobar]{\jobname.tex}{%
  \begin{equation}matrix * (x * x\_factor) = right\end{equation}}

\myExa[label=bar,caption=foobarbaz]{\jobname.tex}{%
  \begin{quotation}Some nonsense text here\end{quotation}}

as shown in Example~\ref{foo} and in Example~\ref{bar} \ldots

\lstlistoflistings

\end{document}

相关内容