使用以下代码时,我的列表环境的背景颜色会出现一些故障:
我该如何避免这些问题?除了这个问题之外,顶部和底部的边距也不同。代码框应该位于两个段落之间。
\documentclass{article}
\usepackage{fontspec}
\usepackage{listings}
\usepackage{lipsum}
\usepackage{xcolor}
\usepackage{xeCJK}
\usepackage{parskip}
\usepackage{lstfiracode}
\setCJKmainfont{ipaexm.ttf}
\setmonofont{Fira Code}
\lstset{
language=C,
style=FiraCodeStyle,
basicstyle=\setlength{\lineskip}{0pt}\ttfamily\footnotesize,
commentstyle=\rmfamily\itshape\color{gray},
backgroundcolor=\color{lightgray},
frame=single,
framerule=0pt,
framextopmargin=3ex,
framexbottommargin=3ex,
framexleftmargin=1em,
xleftmargin={\dimexpr 1em+3pt},
linewidth={\dimexpr \linewidth-3pt}
}
\begin{document}
\lipsum[1][1-3]
\begin{lstlisting}
int main(int argc, char * argv[]) {
printf("hello, world!\n");
}
\end{lstlisting}
\lipsum[2][1-3]
\end{document}
答案1
主要編輯
tcolorbox
我使用和重写了整个示例minted
。我将保留旧的解决方案,因为它运行正常并且更接近原始要求。
如果 pygments 未安装且不在路径中
更新你的 TeX-Distribution。在安装和/或路径问题未解决之前,可以使用以下方法:
latexmk -lualatex -shell-escape foo.tex
\documentclass{article}
\usepackage{fontspec}
\usepackage{blindtext}
% \usepackage{xeCJK}
\usepackage{parskip}
\usepackage{lstfiracode}
\usepackage[
listings
% minted
]{tcolorbox}
% \usepackage{minted}
% \setCJKmainfont{ipaexm.ttf}
% \setmonofont{Fira Code}
\begin{document}
\blindtext[1]
\begin{tcblisting}{
% listing engine=minted,
% minted style=trac,
% minted language=c,
listing only,
boxrule=1pt,
}
int main(int argc, char * argv[]) {
printf("hello, world!\n");
}
\end{tcblisting}
\blindtext[2]
\end{document}
新版本
这提供了漂亮的语法高亮,几乎没有留下任何想象空间:
\documentclass{article}
\usepackage{fontspec}
\usepackage{lipsum}
% \usepackage{xeCJK}
\usepackage{parskip}
\usepackage{lstfiracode}
\usepackage[most,minted]{tcolorbox}
\usepackage{minted}
% \setCJKmainfont{ipaexm.ttf}
% \setmonofont{Fira Code}
\begin{document}
\lipsum[1][1-3]
\begin{tcblisting}{
listing engine=minted,
minted style=trac,
minted language=c,
listing only,
boxrule=1pt,
}
int main(int argc, char * argv[]) {
printf("hello, world!\n");
}
\end{tcblisting}
\lipsum[2][1-3]
\end{document}
输出效果非常好,并且高度可定制:
旧版本
嗯,你的问题有很多解决方案:
甚至在这里:
然而,似乎总是有一个陷阱。这个似乎很可靠:
\documentclass{article}
\usepackage{fontspec}
\usepackage{listings}
\usepackage{adjustbox}
\usepackage{lipsum}
\usepackage{xcolor}
% \usepackage{xeCJK}
\usepackage{parskip}
\usepackage{lstfiracode}
\usepackage[framemethod=tikz]{mdframed}
% \setCJKmainfont{ipaexm.ttf}
% \setmonofont{Fira Code}
\definecolor{light-gray}{gray}{0.75}
\lstset{
language=C,
style=FiraCodeStyle,
basicstyle=\setlength{\lineskip}{0pt}\ttfamily\footnotesize,
commentstyle=\rmfamily\itshape\color{gray},
% frame=single,
% framerule=0pt,
% framextopmargin=3ex,
% framexbottommargin=3ex,
% framexleftmargin=1em,
% xleftmargin={\dimexpr 1em+3pt},
% linewidth={\dimexpr \linewidth-3pt},
aboveskip=1.5em,
belowskip=1em,
}
\surroundwithmdframed[
hidealllines=true,
backgroundcolor=light-gray,
innerleftmargin=15pt,
innertopmargin=0pt,
innerbottommargin=0pt]{lstlisting}
\mdfsetup{skipabove=1.5em,skipbelow=1em}
\begin{document}
\lipsum[1][1-3]
\begin{lstlisting}
int main(int argc, char * argv[]) {
printf("hello, world!\n");
}
\end{lstlisting}
\lipsum[2][1-3]
\end{document}
输出结果如下: