我想要的是一个可以让我创建自己的“盒子”(或块?我总是混淆它们......)的环境,具有以下属性
- 它们以视觉方式将一段源代码和一段解释(可能是数学公式)结合在一起
- 它们以某种方式被索引和命名,这样我就可以将它们列在某个中央目录中
为了感受一下我想在盒子里放置什么:
\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}