Verkleinern der Schriftgröße in einer Auflistung

Verkleinern der Schriftgröße in einer Auflistung

Hallo, ich versuche, einen kurzen Codeausschnitt in eine meiner Beamer-Folien einzufügen

Allerdings passt eine der Zeilen nicht in die Folien. Bitte lassen Sie mich wissen, wie ich die Schriftgröße verringern kann, damit der Quellcode richtig hineinpasst.

Hier ist mein Code,

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

Hier ist die Ausgabe des aktuellen Latex-Codes. Bildbeschreibung hier eingeben

Antwort1

In diesem Fall können Sie den breaklines=trueautomatischen Zeilenumbruch für lange Zeilen aktivieren:

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

Bildbeschreibung hier eingeben

Wenn Sie die Schriftgröße dennoch verringern möchten, können Sie einen der Standard-Schriftgrößenschalter (oder \fontsize{<size>}{<baseline>}\selectfont) in verwenden basicstyle, wie in:

basicstyle=\ttfamily\footnotesize

Ein vollständiges Beispiel, in dem ich Folgendes verwendet habe \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}

Bildbeschreibung hier eingeben

Als Randbemerkung möchte ich diesen Abschnitt verschieben

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

zur Präambel des Dokuments.

Antwort2

Option breaklinesund kleinere Schriftgrößen wurden von Gonzalo bereits ausführlich erklärt.

Flexible Spaltenausrichtung

Die Standardeinstellungen des Pakets listingsverwenden eine feste Spaltenausrichtung, bei der alle Buchstaben den gleichen Abstand einnehmen. Dadurch werden die normalen Abstände zwischen den Buchstaben im Wort zerstört, was das Erscheinungsbild unschön macht. Außerdem sind die Buchstabenkästen recht breit, da auch breite Buchstaben in die Kästen passen müssen. Flexible Spaltenausrichtungen erzielen bessere Ergebnisse, insbesondere wenn das feste Layout nicht benötigt wird, siehe Dokumentation der Auflistungen, „2.10 Feste und flexible Spalten“ und „4.13 Spaltenausrichtung“. Das folgende Beispiel verwendet flexible.

Schriftart mit variabler Breite

Auch die Schriftarten können verbessert werden. Das Beispiel verwendet cmtt, die Schreibmaschinenschriftart von Computer Modern. Eine Weiterentwicklung dieser Schriftarten, die Latin Modern-Schriftarten, bieten eine Schreibmaschinenschriftart mit variabler Breite der Buchstaben:

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

Option variablettwählt Schriftfamilie aus lmvtt. Es gibt einen Nachteil, der Unterstrich ist zu breit und hat zu wenig Platz dazwischen:

Unterstreichen mit lmvtt und lmtt

Dies kann mit der literatePaketfunktion behoben werden listings, siehe Beispiel unten.

Einrücken

Der Quellcode wird versehentlich eingerückt, da die Leerzeichen am Zeilenanfang in der Quelldatei vorhanden sind. Diese Leerzeichen können mit einer Option entfernt werden, gobbleum hässlich aussehende Quelldateien zu vermeiden. In der Ausgabe kann der Quellcode wie in anderen Umgebungen ( quote, …) eingerückt werden, indem eine Option verwendet wird xleftmargin, die auf gesetzt werden kann \leftmargini, die Einrückung von Listen der obersten Ebene (die nächste Ebene ist \leftmarginii, …). Auch der rechte Rand könnte auf gesetzt werden \leftmargini(LaTeX verwendet für links und rechts die gleiche Einrückung), aber ich denke, es ist besser, die rechte Einrückung zu ignorieren, um Quellzeilen zu vermeiden, die über mehrere Zeilen umbrochen werden.

Farbe grün

Das Grün ist sehr hell und auf weißem Hintergrund schwer zu lesen. Etwas mehr Dunkelheit verbessert die Lesbarkeit. Beispielsweise listingsverwendet das Paket darkgreenfür Tasten und Befehle im Referenzhandbuch:

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

Vollständiges Beispiel

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}

Ergebnis

verwandte Informationen