我正在写一本关于 LaTeX 的简短入门书,我想实现美观的代码示例框。使用此答案: 带有代码框架的源代码列表?我通过在序言中设置来制作带有列表包的框:
\usepackage{listings}
\usepackage{xcolor}
\usepackage{caption}
\DeclareCaptionFont{white}{\color{white}}
\DeclareCaptionFormat{listing}{%
\parbox{\textwidth}{\colorbox{gray}{\parbox{\textwidth}{#1#2#3}}\vskip-4pt}}
\captionsetup[lstlisting]{format=listing,labelfont=white,textfont=white}
\lstset{frame=lrb,xleftmargin=\fboxsep,xrightmargin=-\fboxsep,language=[LaTeX]{TeX},columns=flexible}
\renewcommand{\lstlistingname}{Example}
例如在文中:
\begin{lstlisting}[label=firstlook,caption=A First Look]
\documentclass{article}
\begin{document}
Hello World!
\end{document}
\end{lstlisting}
其结果是:
看起来不错。我想为输出做一些类似的事情,并想知道如何做到这一点(我的意思是手动编写输出,而不是自动获取我输入的内容并对其进行评估)。看起来一样的框会很酷,让这个框在中间分开并显示“输出面板”或其他东西会更酷。有人知道我该怎么做吗?
答案1
我认为好的包是 showexpl
。这个包可以与一起使用listings
。
我实际上在 tkzexample 包上工作。最后一个版本是在 ctan 上,但我尝试完成文档。您可以展示源代码和结果,但无法突出显示语法。
\documentclass[]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{tikz,tkzexample}
\usetikzlibrary{shapes,arrows}
\colorlet{graphicbackground}{red!10!white}%
\colorlet{codebackground}{blue!10!white}%
\colorlet{codeonlybackground}{gray!20}
\begin{document}
\parindent=0pt
\begin{tkzexample}[small,width=8cm,overhang,frame tex=red,frame code=blue]
\begin{minipage}{6cm}
\section{Minipage et èçéà\&§}
Ceci est un test pour "minipage"
\end{minipage}
\end{tkzexample}
\hspace{24pt}
\begin{tkzexample}[small,width=3cm,frame tex=red,frame code=blue]
\begin{tikzpicture}
\draw (0,0) node[circle,
shade,
ball color=Peach,minimum size=2cm]{};
\end{tikzpicture}
\end{tkzexample}
\hspace{24pt}
\begin{tkzltxexample}[line frame width=2pt]
\begin{tkzexample}[width=4cm,frame tex=red,frame code=blue]
\tikz[baseline]
\node [circle,line width=1ex,draw=blue,fill=blue]
{\textcolor{white}{\Large{TikZ}}};
\end{tkzexample}
\end{tkzltxexample}
\hspace{24pt}
\begin{tkzexample}[width=4cm,frame tex=red,frame code=blue]
\tikz[baseline]
\node [circle,line width=1ex,draw=blue,fill=blue]
{\textcolor{white}{\Large{TikZ}}};
\end{tkzexample}
\hspace{24pt}
\begin{tkzexample}[width=3cm,frame tex=red,frame code=blue]
$x \mathbin{\tikz[baseline] \draw[|->,>=triangle 45]%
(0pt,.5ex) -- (8ex,.5ex);} f(x)$
\end{tkzexample}
\end{document}
答案2
我知道这是一个老问题,但如果有人来到这里,值得一提tcolorbox
最初的目标是:
使用强调和彩色的框来组合显示源代码和编译文本。
接下来是一些小例子:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage{listings}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}
\begin{document}
\begin{tcblisting}{title=A simple example}
Hello World, this is \LaTeX
\end{tcblisting}
\begin{tcblisting}{title=Side by side, listing outside text}
Hello World, this is \LaTeX
\end{tcblisting}
\begin{tcblisting}{title=Side by side, text side listing}
Hello World, this is \LaTeX
\end{tcblisting}
\end{document}
一些更复杂的例子: