我正在写一个关于 LaTeX 的小教程。所以我想插入一些代码并获得右边的结果。
我快完成了。我得到了想要的输出,但我希望得到更清晰的结果,也就是更容易输入代码。
考虑以下 MWE:
\documentclass[draft,11pt,a4paper]{article}
\usepackage{showexpl}
\usepackage[section]{minted}
\newminted{tex}{
bgcolor=bg,
gobble=1,
linenos=true,
firstline=1,
firstnumber=1,
fontfamily=courier,
fontsize=\footnotesize,
numberblanklines=false,
numbersep=3mm,
xleftmargin=6mm,
xrightmargin=5mm,
}
\definecolor{bg}{rgb}{0.95,0.95,0.95}
\usepackage{lipsum}
\newlength\ideal
\setlength{\ideal}{.5\linewidth - 2\fboxsep -2\fboxrule}
\begin{document}
\lipsum[4]
\begin{listing}
\begin{texcode}
\begin{equation}
\frac{3}{2}=\frac{a}{b}
\end{equation}
\end{texcode}
\end{listing}
\lipsum[4]
\begin{listing}
\begin{minipage}{\ideal}
\begin{texcode}
\begin{equation}
\frac{3}{2}=\frac{a}{b}
\end{equation}
\end{texcode}
\end{minipage}
\hfill
\begin{minipage}{\ideal}
\begin{equation}
\frac{3}{2}=\frac{a}{b}
\end{equation}
\end{minipage}
\caption{title}
\end{listing}
\lipsum[4]
\end{document}
输出为:
我想知道这是否是正确的方法或者是否有可能避免输入两次代码。
我想定义一个环境myenv
,然后使用以下命令获得与清单 0.1 相同的结果
\begin{myenv}
\begin{equation}
\frac{3}{2}=\frac{a}{b}
\end{equation}
\end{myenv}
而且标题也是可选的。我尝试过,showexpl
但到现在还没有成功。
编辑
我刚刚发现这个话题但那里的结果并没有产生右边的输出。
答案1
你知道吗tcolorbox
? 它被开发用于帮助格式化 LaTeX 教程。
下一个代码使用默认设置,从那里您可以自定义几乎所有内容。
\documentclass[11pt,a4paper]{article}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}
\begin{document}
\lipsum[4]
\begin{tcblisting}{listing only}
\begin{equation}
\frac{3}{2}=\frac{a}{b}
\end{equation}
\end{tcblisting}
\lipsum[4]
\begin{tcblisting}{listing side text}
\begin{equation}
\frac{3}{2}=\frac{a}{b}
\end{equation}
\end{tcblisting}
\lipsum[4]
\end{document}
答案2
这只是对 Konrad 答案的改进,更加符合您的规格。
\documentclass{article}
\usepackage{minted}
\definecolor{bg}{rgb}{0.95,0.95,0.95}
% conditional caption (only gets printed if the argument is not empty)
\newcommand\condcaption[1]{%
\if\relax\detokenize{#1}\relax
\else
\caption{#1}
\fi
}
\newenvironment{myenv}[1]
{%
\listing
\condcaption{#1}
\VerbatimEnvironment
\begin{VerbatimOut}{example.out}%
}{%
\end{VerbatimOut}%
\vspace{1ex}%
\setlength{\parindent}{0pt}%
\begin{minipage}{0.5\linewidth}%
\inputminted[
resetmargins,
bgcolor = bg,
gobble = 1,
linenos = true,
firstline = 1,
firstnumber = 1,
fontfamily = courier,
fontsize = \footnotesize,
numberblanklines = false,
numbersep = 3mm,
xleftmargin = 6mm,
xrightmargin = 5mm,
]{latex}{example.out}%
\end{minipage}%
\hspace{0.05\linewidth}%
\begin{minipage}{0.4\linewidth}%
\input{example.out}%
\end{minipage}
\endlisting
}
\begin{document}
\begin{myenv}{A simple equation}
\begin{equation}
\frac{3}{2}=\frac{a}{b}
\end{equation}
\end{myenv}
\begin{myenv}{}
\begin{equation}
\frac{3}{2}=1+\frac{1}{2}
\end{equation}
\end{myenv}
\end{document}
答案3
看看minted 的源代码,它对在文档中排版其示例执行的操作完全相同。
以下是相关部分:
\newenvironment{example}
{\VerbatimEnvironment
\begin{VerbatimOut}[gobble=3]{example.out}}
{\end{VerbatimOut}%
\vspace{1ex}%
\setlength{\parindent}{0pt}%
\fbox{\begin{minipage}{0.5\linewidth}%
\inputminted[resetmargins]{latex}{example.out}%
\end{minipage}%
\hspace{0.05\linewidth}%
\begin{minipage}{0.4\linewidth}%
\input{example.out}%
\end{minipage}%
\vspace{1ex}}}
它使用两个并排的minipage
来相邻地放置示例代码和输出。在内部,\VerbatimOut
用于将示例代码逐字存储在临时文件中,然后将其传递给该文件minted
进行漂亮打印(左侧),并\input
直接将其用于排版(右侧)。