列表包允许将背景颜色添加到代码列表中。问题是背景颜色的范围与代码列表所在的文本区域一样大。如果代码宽度较短,但其所在的区域较大,则可能会使其看起来很丑陋。这是 MWE
\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{color}
\usepackage{listings}
\definecolor{bg}{RGB}{240,240,240}
\begin{document}
\begin{tabular}{|p{0.8\textwidth}|p{.2\textwidth}|}\hline
\begin{lstlisting}[language=Mathematica,backgroundcolor=\color{bg}]
f[x_] := Sin[x];
Plot[f[x],{x,-Pi,Pi}]
\end{lstlisting}
&
plot command
\\\hline
\end{tabular}
\end{document}
给出了
我想要的是这个
(附言:我使用我高度发达的paint.exe技能手动完成了上述操作)。
问题在于人们不知道代码的“宽度”有多大,因此可能在minipage
代码周围放置一个特定宽度的元素或者一个框架或者其他技巧来限制代码的区域。
有什么技巧可以帮助解决这个问题吗?
Latex 是否有命令可以查找列表中最长行的长度?如果是这样,那么就可以使用这个长度(加上一点点)来制作一个框架或小页面。
答案1
您可以使用tcblisting
来自tcolorbox
包装。使用hbox
key 时,其大小将根据内容的尺寸确定。
\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{color}
\usepackage{listings}
\usepackage{tcolorbox}
\tcbuselibrary{listings}
\definecolor{bg}{RGB}{240,240,240}
\begin{document}
\begin{tabular}{|p{0.8\textwidth}|p{.2\textwidth}|}\hline
\begin{lstlisting}[language=Mathematica,backgroundcolor=\color{bg}]
f[x_] := Sin[x];
Plot[f[x],{x,-Pi,Pi}]
\end{lstlisting}
&
plot command
\\\hline
\end{tabular}
\begin{tabular}{|p{0.8\textwidth}|p{.2\textwidth}|}\hline
\begin{tcblisting}{colback=bg,size=minimal,hbox,listing only,listing options={language=Mathematica}}
f[x_] := Sin[x];
Plot[f[x],{x,-Pi,Pi}]
\end{tcblisting}
&
plot command
\\\hline
\end{tabular}
\end{document}