我正在尝试将代码包含到我的演示文稿中。有两件事需要修复:
- 代码行之间出现水平线
- 我不想使用整个页面,需要自动裁剪到代码的大小
代码行之间的灰色水平线:
梅威瑟:
\documentclass[10pt]{article}
\usepackage[usenames,dvipsnames]{xcolor} %used for font color
\usepackage[utf8]{inputenc} %useful to type directly diacritic characters
\usepackage{listings}
\begin{document}
\definecolor{lbcolor}{rgb}{0.1,0.1,0.1}
\lstset{
basicstyle=\ttfamily\color{White},
language=Java,
tabsize=1,
xleftmargin=20pt,
keywordstyle=\color{Red}\bf,
showstringspaces=false,
morekeywords={public, class},
backgroundcolor=\color{Black}
}
\begin{lstlisting}
public class MyObject{
public MyObject(){
System.out.println("MyObject");
}
}
\end{lstlisting}
\end{document}
答案1
和tcolorbox
。
首先,我们mystyle
通过定义一个新的列表样式\lstdefinestyle
,而不是定义\lstset
。这是之后需要的。backgroundcolor
删除该选项很重要。
然后我们mylisting
通过定义一个新的列表环境\newtcblisting
。选项listing options={style=mystyle}
是使用先前定义的样式mystyle
。选项hbox
则会将列表的内容裁剪为其大小。
此时,使用环境mylisting
代替lstlisting
。由于框中填充了黑色,因此白线会消失,而使用正常方式时,lstlisting
背景会逐行打印。
梅威瑟:
\documentclass[10pt]{article}
\usepackage[usenames,dvipsnames]{xcolor} %used for font color
\usepackage[utf8]{inputenc} %useful to type directly diacritic characters
\usepackage{listings}
\usepackage{tcolorbox}
\tcbuselibrary{listings}
\begin{document}
\definecolor{lbcolor}{rgb}{0.1,0.1,0.1}
\lstdefinestyle{mystyle}{
basicstyle=\ttfamily\color{White},
language=Java,
tabsize=1,
keywordstyle=\color{Red}\bf,
showstringspaces=false,
morekeywords={public, class}
}
\newtcblisting{mylisting}{
arc=0pt,
top=0mm,
bottom=0mm,
left=0mm,
right=0mm,
boxrule=0pt,
colback=black,
listing only,
listing options={style=mystyle},
hbox
}
\begin{mylisting}
public class MyObject{
public MyObject(){
System.out.println("MyObject");
}
}
\end{mylisting}
\end{document}
输出: