안녕하세요. 저는 비머 슬라이드 중 하나에 짧은 코드 조각을 포함하려고 합니다.
그러나 라인 중 하나가 슬라이드에 맞지 않습니다. 소스코드가 제대로 맞도록 글꼴 크기를 줄이는 방법을 알려주세요.
여기 내 코드가 있습니다.
\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
옵션 breaklines
과 더 작은 글꼴 크기는 이미 Gonzalo가 자세히 설명했습니다.
유연한 열 정렬
패키지의 기본 설정은 listings
모든 문자가 동일한 공백을 사용하는 고정된 열 정렬을 사용합니다. 이는 단어의 글자 사이의 정상적인 거리를 파괴하여 보기 흉하게 만듭니다. 또한 편지함은 꽤 넓습니다. 왜냐하면 넓은 글자도 상자에 들어가야 하기 때문입니다. 유연한 열 정렬은 더 나은 결과를 얻습니다. 특히 고정 레이아웃이 필요하지 않은 경우 "2.10 고정 및 유연한 열" 및 "4.13 열 정렬" 목록 문서를 참조하세요. 아래 예에서는 flexible
.
가변 너비의 글꼴
또한 글꼴도 개선될 수 있습니다. 이 예에서는 cmtt
Computer Modern의 타자기 글꼴인 를 사용합니다. 이러한 글꼴의 추가 개발인 Latin Modern 글꼴은 문자 폭이 가변적인 타자기 글꼴을 제공합니다.
\usepackage[T1]{fontenc}
\usepackage[variablett]{lmodern}
옵션은 variablett
글꼴 모음을 선택합니다 lmvtt
. 단점은 밑줄이 너무 넓어서 사이의 공간이 너무 적다는 것입니다.
literate
이는 package 기능을 사용하여 해결할 수 있습니다 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}