我想将 lstlisting 环境水平居中。我尝试使用“xleftmargin=0.2\textwidth”,但结果并不令人满意。我尝试将 lstlisting 环境包含在中心环境(父子)中,但不起作用。我甚至尝试将 lstlisting 包含在图形环境中,然后 \centering 和 lstlising,但这也不起作用。
我看了几篇帖子,特别是这个但给出的解决方案实际上对我来说不起作用。我会留下我写下的代码。
\documentclass{article}
\usepackage{listings}
\begin{document}
\lstset{frame=none,
language=SQL,
aboveskip=3mm,
belowskip=3mm,
showstringspaces=false,
columns=flexible,
basicstyle={\ttfamily},
numbers=none,
numberstyle=\tiny\color{gray},
keywordstyle=\bfseries,
commentstyle=\color{dkgreen},
stringstyle=\color{mauve},
tabsize=4,
captionpos=b
}
\begin{lstlisting}
create table Student
(
Number char(16) primary key,
Name varchar(30),
Surname varchar(30)
)
\end{lstlisting}
\end{document}
我还注意到,如果不指定任何“tabsize”值,它就会自动居中,但我确实需要该 tabsize 值。
答案1
解决方案来自链接问题有效,我看不出有或没有的区别tabsize=4
。请注意添加的选项gobble
。
\documentclass{article}
\usepackage[pass, showframe]{geometry} % show centering effect
\usepackage{listings}
\usepackage{fancybox}
\makeatletter
\newenvironment{CenteredBox}{%
\begin{Sbox}%
}{% Save the content in a box
\end{Sbox}\centerline{\parbox{\wd\@Sbox}{\TheSbox}}%
}% And output it centered
\makeatother
\begin{document}
\lstset{frame=none,
language=SQL,
aboveskip=3mm,
belowskip=3mm,
showstringspaces=false,
columns=flexible,
basicstyle={\ttfamily},
numbers=none,
numberstyle=\tiny\color{gray},
keywordstyle=\bfseries,
commentstyle=\color{dkgreen},
stringstyle=\color{mauve},
tabsize=4,
captionpos=b
}
\begin{CenteredBox}
% "gobble" IS required
\begin{lstlisting}[gobble=7]
create table Student
(
Number char(16) primary key,
Name varchar(30),
Surname varchar(30)
)
\end{lstlisting}
\end{CenteredBox}
\end{document}