Disminuir el tamaño de fuente en un listado

Disminuir el tamaño de fuente en un listado

Hola, estoy intentando incluir un fragmento de código corto en una de mis diapositivas del proyector.

Sin embargo, una de las líneas no encaja en las diapositivas. Déjame saber cómo disminuir el tamaño de fuente para que el código fuente se ajuste correctamente.

Aquí está mi código,

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

Aquí está el resultado del código de látex actual. ingrese la descripción de la imagen aquí

Respuesta1

En este caso puedes utilizar breaklines=truepara activar el salto de línea automático de líneas largas:

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

ingrese la descripción de la imagen aquí

Si aún desea reducir el tamaño de fuente, puede usar uno de los interruptores de tamaño de fuente estándar (o \fontsize{<size>}{<baseline>}\selectfont) en basicstyle, como en:

basicstyle=\ttfamily\footnotesize

Un ejemplo completo en el que utilicé \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}

ingrese la descripción de la imagen aquí

Como nota al margen, movería esta sección

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

al preámbulo del documento.

Respuesta2

breaklinesGonzalo ya explica en detalle la opción y los tamaños de fuente más pequeños.

Alineación de columnas flexible

La configuración predeterminada del paquete listingsusa una alineación de columnas fija, donde todas las letras usan el mismo espacio. Destruye las distancias normales entre las letras de la palabra, lo que hace que la palabra se vea fea. Además, los buzones son bastante anchos, porque en ellos también deben caber letras anchas. Las alineaciones de columnas flexibles obtienen mejores resultados, especialmente si no se necesita el diseño fijo; consulte la documentación de listados, "2.10 Columnas fijas y flexibles" y "4.13 Alineación de columnas". El siguiente ejemplo utiliza flexible.

Fuente con anchos variables

También se pueden mejorar las fuentes. El ejemplo utiliza cmtt, la fuente de máquina de escribir de Computer Modern. Un desarrollo posterior de estas fuentes, las fuentes Latin Modern, proporcionan una fuente de máquina de escribir con anchos de letras variables:

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

La opción variablettselecciona la familia de fuentes lmvtt. Hay un inconveniente: el guión bajo es demasiado ancho y hay menos espacio entre ellos:

Subrayado con lmvtt y lmtt

Esto se puede solucionar utilizando la literatefunción del paquete listings; consulte el ejemplo a continuación.

Sangría

El código fuente recibe sangría por accidente, debido a los espacios al inicio de la línea en el archivo fuente. Estos espacios se pueden eliminar opcionalmente gobblepara evitar archivos fuente de aspecto desagradable. En la salida, la fuente se puede sangrar como otros entornos ( quote,…) usando la opción xleftmarginque se puede configurar en \leftmargini, la sangría de las listas de nivel superior (el siguiente nivel es \leftmarginii,…). También se podría establecer el margen derecho \leftmargini(LaTeX usa la misma sangría para izquierda y derecha), pero creo que es mejor ignorar la sangría derecha para evitar líneas fuente que estén divididas entre líneas.

Color verde

El verde es muy brillante y difícil de leer sobre un fondo blanco. Un poco más de oscuridad mejora la legibilidad. Por ejemplo, el listingspaquete utiliza darkgreenclaves y comandos en la guía de referencia:

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

Ejemplo completo

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}

Resultado

información relacionada