减小列表中的字体大小

减小列表中的字体大小

你好,我正在尝试将一小段代码片段包含到我的一张投影仪幻灯片中

但是其中一行不适合幻灯片。请告诉我如何减小字体大小以使源代码正确适合。

这是我的代码,

\begin{frame}[fragile]{CUDA C Concepts}
  \textbf{\color{orange}Kernel} \textit{Def} C functions which are executed N times in parallel by 
                                        N different CUDA threads
   \lstset{language=C++,
           basicstyle=\ttfamily,
           keywordstyle=\color{blue}\ttfamily,
           stringstyle=\color{red}\ttfamily,
           commentstyle=\color{green}\ttfamily
          }
    \begin{lstlisting}
    // Kernel Definition
   __global__ void VecAdd(float* A, float* B, float* C)
    {
      int i = threadIdx.x;
      C[i] = A[i] + B[i]; 
    }
    int main(void)
    {
    ...
    // Kernel Invocation with N threads
    return 0;
    }
    \end{lstlisting}  
\end{frame}

这是当前乳胶代码的输出。 在此处输入图片描述

答案1

在这种情况下,您可以使用来breaklines=true激活长行的自动换行:

\documentclass{beamer}
\usetheme{Boadilla}
\usepackage{listings}

\begin{document}

\begin{frame}[fragile]{CUDA C Concepts}
  \textbf{\color{orange}Kernel} \textit{Def} C functions which are executed N times in parallel by 
                                        N different CUDA threads
   \lstset{language=C++,
           basicstyle=\ttfamily,
           keywordstyle=\color{blue}\ttfamily,
           stringstyle=\color{red}\ttfamily,
           commentstyle=\color{green}\ttfamily,
          breaklines=true
          }
    \begin{lstlisting}
    // Kernel Definition
   __global__ void VecAdd(float* A, float* B, float* C)
    {
      int i = threadIdx.x;
      C[i] = A[i] + B[i]; 
    }
    int main(void)
    {
    ...
    // Kernel Invocation with N threads
    return 0;
    }
    \end{lstlisting}  
\end{frame}

\end{document}

在此处输入图片描述

如果您仍想减小字体大小,可以使用\fontsize{<size>}{<baseline>}\selectfont中的标准字体大小开关之一(或 )basicstyle,例如:

basicstyle=\ttfamily\footnotesize

我使用的一个完整示例\scriptsize

\documentclass{beamer}
\usetheme{Boadilla}
\usepackage{listings}

\begin{document}

\begin{frame}[fragile]{CUDA C Concepts}
  \textbf{\color{orange}Kernel} \textit{Def} C functions which are executed N times in parallel by 
                                        N different CUDA threads
   \lstset{language=C++,
           basicstyle=\ttfamily\scriptsize,
           keywordstyle=\color{blue}\ttfamily,
           stringstyle=\color{red}\ttfamily,
           commentstyle=\color{green}\ttfamily,
          breaklines=true
          }
    \begin{lstlisting}
    // Kernel Definition
   __global__ void VecAdd(float* A, float* B, float* C)
    {
      int i = threadIdx.x;
      C[i] = A[i] + B[i]; 
    }
    int main(void)
    {
    ...
    // Kernel Invocation with N threads
    return 0;
    }
    \end{lstlisting}  
\end{frame}

\end{document}

在此处输入图片描述

顺便说一句,我会将这一部分移到

\lstset{language=C++,
       basicstyle=\ttfamily,
       keywordstyle=\color{blue}\ttfamily,
       stringstyle=\color{red}\ttfamily,
       commentstyle=\color{green}\ttfamily,
      breaklines=true
      }

该文件的序言。

答案2

breaklinesGonzalo 已经详细解释了选项和较小的字体大小。

灵活的列对齐

包的默认设置listings使用固定列对齐,其中所有字母使用相同的空间。它破坏了单词中字母之间的正常距离,使外观变得丑陋。而且字母框非常宽,因为宽字母也必须适合这些框。灵活的列对齐会获得更好的效果,特别是如果不需要固定布局,请参阅清单文档“2.10 固定和灵活列”和“4.13 列对齐”。下面的示例使用flexible

宽度可变的字体

字体也可以改进。示例使用cmttComputer Modern 的打字机字体。这些字体的进一步发展,即 Latin Modern 字体,提供了一种字母宽度可变的打字机字体:

\usepackage[T1]{fontenc}
\usepackage[variablett]{lmodern}

Optionvariablett选择字体系列lmvtt。有一个缺点,下划线太宽,中间的空间太小:

使用 lmvtt 和 lmtt 加下划线

可以使用literate包的功能来修复此问题listings,请参见下面的示例。

缩进

源代码被意外缩进,因为源文件中行首有空格。这些空格可以通过选项删除,gobble以避免源文件看起来很糟糕。在输出中,源可以像其他环境一样缩进( ,...),使用可以设置为的quote选项,顶级列表的缩进(下一级是,...)。右边距也可以设置为(LaTeX 对左右使用相同的缩进),但我认为,最好忽略右缩进,以避免源行跨行断开。xleftmargin\leftmargini\leftmarginii\leftmargini

颜色 绿色

绿色非常亮,在白色背景上难以阅读。稍微暗一点可以提高可读性。例如,该listingsdarkgreen在参考指南中使用了以下键和命令:

\definecolor{darkgreen}{rgb}{0,0.5,0}

完整示例

documentclass{beamer}
\usetheme{Boadilla}
\usepackage{listings}

\usepackage[T1]{fontenc}
\usepackage[variablett]{lmodern}

\newcommand*{\vttfamily}{%
  \fontencoding{T1}\fontfamily{lmvtt}\selectfont
}

\newcommand*{\textsmallunderscore}{%
  \begingroup
    \fontencoding{T1}\fontfamily{lmtt}\selectfont
    \textunderscore
  \endgroup
}

\definecolor{darkgreen}{rgb}{0,.5,0}

\begin{document}

\begin{frame}[fragile]{CUDA C Concepts}
  \textbf{\color{orange}Kernel} \textit{Def} C functions
  which are executed N times in parallel by
  N different CUDA threads
  \lstset{
    language=C++,
    basicstyle=\ttfamily,
    keywordstyle=\color{blue}\ttfamily,
    stringstyle=\color{red}\ttfamily,
    commentstyle=\color{darkgreen}\ttfamily,
    breaklines=true,
    columns=flexible,
    literate={_}{\textsmallunderscore}1,
    gobble=4,
    xleftmargin=\leftmargini,
  }
  \begin{lstlisting}
    // Kernel Definition
    __global__ void VecAdd(float* A, float* B, float* C)
    {
      int i = threadIdx.x;
      C[i]  = A[i] + B[i];
    }
    int main(void)
    {
    ...
    // Kernel Invocation with N threads
    return 0;
    }
  \end{lstlisting}
\end{frame}

\end{document}

结果

相关内容