減小清單中的字體大小

減小清單中的字體大小

您好,我正在嘗試在我的一張投影機幻燈片中包含一個簡短的程式碼片段

然而,其中一條線不適合幻燈片。請讓我知道如何減小字體大小以使原始程式碼正確適合。

這是我的程式碼,

\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 的打字機字體 。這些字體的進一步發展,拉丁現代字體,提供了字母寬度可變的打字機字體:

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

選項variablett選擇字體系列lmvtt。有一個缺點,底線太寬,之間的空間太少:

帶有 lmvtt 和 lmtt 的下劃線

可以使用literatepackage 的功能來修復這個listings問題,請參考下面的範例。

縮排

原始碼意外縮進,因為來源檔案中行開頭有空格。可以透過選項刪除這些空格,gobble以避免看起來令人討厭的來源檔案。在輸出中,可以像其他環境一樣縮排來源(quote,...),使用xleftmargin可以設定為 的選項\leftmargini,即頂級清單的縮排(下一級是\leftmarginii,...)。另外,右邊距可以設定為\leftmargini(LaTeX 左右使用相同的縮排),但我認為,最好忽略右側縮排,以避免原始碼行跨行斷開。

顏色綠色

綠色非常明亮,在白色背景上難以辨認。多一點黑暗可以提高可讀性。例如,該listings套件用於darkgreen參考指南中的按鍵和命令:

\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}

結果

相關內容