リスト内のフォントサイズを小さくする

リスト内のフォントサイズを小さくする

こんにちは。私は短いコードスニペットをビーマースライドの1つに含めようとしています。

しかし、1 行がスライドに収まりません。ソース コードが適切に収まるようにフォント サイズを小さくする方法を教えてください。

これが私のコードです。

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

これが現在の LaTeX コードの出力です。 ここに画像の説明を入力してください

答え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

オプションbreaklinesと小さいフォント サイズについては、Gonzalo によってすでに詳しく説明されています。

柔軟な列配置

パッケージのデフォルト設定ではlistings、すべての文字が同じスペースを使用する固定列配置が使用されます。これにより、単語内の文字間の通常の距離が破壊され、見た目が醜くなります。また、幅の広い文字もボックスに収まる必要があるため、文字ボックスはかなり広くなります。柔軟な列配置を使用すると、特に固定レイアウトが必要ない場合は、より良い結果が得られます。リストのドキュメント、「2.10 固定列と柔軟な列」および「4.13 列配置」を参照してください。以下の例では を使用していますflexible

可変幅フォント

フォントも改良できます。例ではcmtt、Computer Modern のタイプライター フォントを使用しています。これらのフォントをさらに発展させた Latin Modern フォントは、文字の幅が可変のタイプライター フォントを提供します。

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

オプションはvariablettフォント ファミリを選択しますlmvtt。欠点は、アンダースコアが広すぎて、その間のスペースが狭すぎることです。

lmvtt と lmtt によるアンダースコア

literateこれは、パッケージの機能を使用して修正できますlistings。以下の例を参照してください。

インデント

ソース ファイルの行頭にスペースがあるため、ソース コードが誤ってインデントされてしまいます。これらのスペースは、gobble見苦しいソース ファイルを避けるために、オプションを使用して削除できます。出力では、オプションを に設定して、他の環境 ( quote、…)と同様にインデントできます。これは、トップ レベルのリストのインデント (次のレベルは、…) です。右マージンを に設定することもできます(LaTeX は左と右に同じインデントを使用します)。ただし、ソース行が複数行に分割されるのを避けるために、右のインデントを無視する方がよいと思います。xleftmargin\leftmargini\leftmarginii\leftmargini

色 緑

緑は非常に明るいため、白い背景では読みにくいです。もう少し暗くすると読みやすくなります。たとえば、パッケージではリファレンス ガイドのキーとコマンドに次のもの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}

結果

関連情報