Olá, estou tentando incluir um pequeno trecho de código em um dos meus slides do beamer
No entanto, uma das linhas não cabe nos slides. Por favor, deixe-me saber como diminuir o tamanho da fonte para que o código-fonte caiba corretamente.
Aqui está o meu 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}
Aqui está a saída do código látex atual.
Responder1
Neste caso você pode usar breaklines=true
para ativar a quebra automática de linhas longas:
\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}
Se ainda quiser reduzir o tamanho da fonte, você pode usar uma das opções de tamanho de fonte padrão (ou \fontsize{<size>}{<baseline>}\selectfont
) em basicstyle
, como em:
basicstyle=\ttfamily\footnotesize
Um exemplo completo em que usei \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}
Como observação lateral, eu moveria esta seção
\lstset{language=C++,
basicstyle=\ttfamily,
keywordstyle=\color{blue}\ttfamily,
stringstyle=\color{red}\ttfamily,
commentstyle=\color{green}\ttfamily,
breaklines=true
}
ao preâmbulo do documento.
Responder2
Opção breaklines
e tamanhos de fonte menores já são explicados detalhadamente por Gonzalo.
Alinhamento de coluna flexível
As configurações padrão do pacote listings
utilizam um alinhamento de coluna fixo, onde todas as letras utilizam o mesmo espaço. Destrói as distâncias normais entre as letras da palavra, o que torna a aparência feia. Além disso, as caixas de correio são bastante largas, porque letras largas também devem caber nas caixas. Alinhamentos de colunas flexíveis obtêm melhores resultados, principalmente se o layout fixo não for necessário, veja documentação das listagens, "2.10 Colunas fixas e flexíveis" e "4.13 Alinhamento de colunas". O exemplo abaixo usa flexible
.
Fonte com larguras variáveis
Além disso, as fontes podem ser melhoradas. O exemplo usa cmtt
a fonte de máquina de escrever da Computer Modern. Um desenvolvimento adicional dessas fontes, as fontes Latin Modern, fornecem uma fonte de máquina de escrever com larguras variáveis das letras:
\usepackage[T1]{fontenc}
\usepackage[variablett]{lmodern}
A opção variablett
seleciona a família de fontes lmvtt
. Há uma desvantagem: o sublinhado é muito largo e com muito menos espaço entre eles:
Isso pode ser corrigido usando o literate
recurso package listings
, veja o exemplo abaixo.
Recuo
O código-fonte fica recuado acidentalmente, devido aos espaços no início da linha no arquivo fonte. Esses espaços podem ser removidos opcionalmente gobble
para evitar arquivos de origem com aparência desagradável. Na saída a fonte pode ser recuada como outros ambientes ( quote
, …) usando a opção xleftmargin
que pode ser definida como \leftmargini
, o recuo das listas de nível superior (o próximo nível é \leftmarginii
, …). Além disso, a margem direita pode ser definida como \leftmargini
(o LaTeX usa o mesmo recuo para esquerda e direita), mas acho melhor ignorar o recuo direito para evitar linhas de origem quebradas entre linhas.
Cor verde
O verde é muito brilhante e difícil de ler sobre fundo branco. Um pouco mais de escuridão melhora a legibilidade. Por exemplo, o listings
pacote usa darkgreen
chaves e comandos no guia de referência:
\definecolor{darkgreen}{rgb}{0,0.5,0}
Exemplo 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}