居中列表环境

居中列表环境

我想将 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}

在此处输入图片描述

相关内容