将列表标题置于代码上方的中央

将列表标题置于代码上方的中央

我无法将标题“Listing:1”置于列表的中心。

\documentclass[8pt,blue]{beamer}

\setbeamertemplate{navigation symbols}{}
\usepackage{subfigure}


\usepackage{fontspec}
\usepackage{xunicode}
\setsansfont{DejaVuSans}
\usepackage{polyglossia}
\setmainlanguage{greek}
\setotherlanguage{english}

\usepackage{url}
\usepackage{indentfirst}
\usepackage{float} % for images
\usepackage{color}
\usepackage{listings} 
\usepackage{caption,subcaption}

\definecolor{darkgreen}{RGB}{0,163,82}
\definecolor{structure}{rgb}{0.2,0.2,0.7}
\usepackage{wrapfig}
\usepackage{listings}
\usepackage{textcomp}
\definecolor{listinggray}{gray}{0.9}
\definecolor{lbcolor}{rgb}{1,1,1}

\lstset{
  backgroundcolor=\color{lbcolor},
  tabsize=4,
  rulecolor=,
  language=c++,
      basicstyle=\scriptsize,
      upquote=true,
      aboveskip={1.5\baselineskip},
      columns=flexible,
      showstringspaces=false,
      extendedchars=true,
      breaklines=true,
      numbers=none,
      prebreak = \raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
      %frame=false,
      showtabs=false,
      showspaces=false,
      showstringspaces=false,
      identifierstyle=\ttfamily,
      keywordstyle=\color[rgb]{0,0,1},
      commentstyle=\color[rgb]{0.133,0.545,0.133},
      stringstyle=\color[rgb]{0.627,0.126,0.941},    
}

\newcommand{\EN}[1]{\foreignlanguage{english}{#1}}
\mode<presentation>

\begin{document}


\begin{frame}[fragile]

\frametitle{intro}
\setbeamercovered{transparent}


\noindent\begin{minipage}{.5\textwidth}
\begin{lstlisting}[caption= code 1]
int main(void) {
    printf("Left\n");
    return 0;
}

\end{lstlisting}
\end{minipage}\hfill
\begin{minipage}{.5\textwidth}

\begin{lstlisting}[caption= code 2]
int main(void) {
    printf("Right\n");
    return 0;

}
\end{lstlisting}
\end{minipage}

\end{frame}


\end{document}

以下是我收到的内容的屏幕截图:

在此处输入图片描述

我希望标题位于代码上方的中央。

答案1

您使用相当小的默认字体大小 ( 8pt),最大化小页面的宽度 ( 0.5\textwidth),并且列表内的代码片段的行长相当短。这些因素结合起来,给人的印象是标题没有居中,而实际上,它们在相应的小页面上完美居中——正如@Werner 已经在评论中指出的那样。

最简单的解决方法是使用稍窄一点的宽度,例如,0.3\textwidth用于两个 minipage 环境。如果您可以使用正常的默认字体大小,而不是8pt,那么您可能应该0.35\textwidth为两个环境的宽度选择类似的东西,以避免产生一些不必要的换行符。

附录:如果没有8pt文档类选项,并且将小页面的宽度设置为0.35\textwidth,并且(为了更好的衡量)注释掉所有对于手头的示例不需要的包加载代码,则结果如下:

在此处输入图片描述

希望这更接近您想要实现的目标。

\documentclass[blue]{beamer}
\setbeamertemplate{navigation symbols}{}
%\usepackage{subfigure}

\usepackage{fontspec}
\usepackage{xunicode}
\setsansfont{DejaVuSans}
%\usepackage{polyglossia}
%\setmainlanguage{greek}
%\setotherlanguage{english}

%\usepackage{url}
%\usepackage{indentfirst}
%\usepackage{float} % for images
%\usepackage{color}
%\usepackage{listings} 
%\usepackage{caption,subcaption}

\definecolor{darkgreen}{RGB}{0,163,82}
\definecolor{structure}{rgb}{0.2,0.2,0.7}
%\usepackage{wrapfig}
\usepackage{listings}
%\usepackage{textcomp}
\definecolor{listinggray}{gray}{0.9}
\definecolor{lbcolor}{rgb}{1,1,1}

\lstset{
  backgroundcolor=\color{lbcolor},
  tabsize=4,
  rulecolor=,
  language=c++,
      basicstyle=\scriptsize,
      upquote=true,
      aboveskip={1.5\baselineskip},
      columns=flexible,
      showstringspaces=false,
      extendedchars=true,
      breaklines=true,
      numbers=none,
      prebreak = \raisebox{0ex}[0ex][0ex]
         {\ensuremath{\hookleftarrow}},
      %frame=false,
      showtabs=false,
      showspaces=false,
      showstringspaces=false,
      identifierstyle=\ttfamily,
      keywordstyle=\color[rgb]{0,0,1},
      commentstyle=\color[rgb]{0.133,0.545,0.133},
      stringstyle=\color[rgb]{0.627,0.126,0.941},    
}

%\newcommand{\EN}[1]{\foreignlanguage{english}{#1}}
\mode<presentation>

\begin{document}


\begin{frame}[fragile]

\frametitle{intro}
\setbeamercovered{transparent}

\noindent
\begin{minipage}{.35\textwidth}
\begin{lstlisting}[caption= code 1]
int main(void) {
    printf("Left\n");
    return 0;
}
\end{lstlisting}
\end{minipage}
\hfill
\begin{minipage}{.35\textwidth}
\begin{lstlisting}[caption= code 2]
int main(void) {
    printf("Right\n");
    return 0;

}
\end{lstlisting}
\end{minipage}
\end{frame}
\end{document}

相关内容