yu00’s blog

プログラミングに関する備忘録です

LaTeXで色付きソースコードを貼り付け

LaTeXC言語などのソースコードを色付きで貼り付けるには,
jlistingパッケージを使うといいです.
インストール方法については省略します.

使い方の例

texファイル

% (省略)
\usepackage{color}
\usepackage{listings,jlisting}

\lstset{
language={C},
backgroundcolor={\color[gray]{.85}},
basicstyle={\small},
identifierstyle={\small},
commentstyle={\small\ttfamily \color[rgb]{0,0.5,0}},
keywordstyle={\small\bfseries \color[rgb]{1,0,0}},
ndkeywordstyle={\small},
stringstyle={\small\ttfamily \color[rgb]{0,0,1}},
frame={tb},
breaklines=true,
columns=[l]{fullflexible},
numbers=left,
xrightmargin=0zw,
xleftmargin=3zw,
numberstyle={\scriptsize},
stepnumber=1,
numbersep=1zw,
morecomment=[l]{//}
}

\begin{document}

% ソースコードが別ファイルの場合
\lstinputlisting[caption=キャプション,label=ラベル]{test.c}

% ソースコードを直接記入
\begin{lstlisting}[caption=キャプション,label=ラベル]
#include <stdio.h>
int main(void) {
	//	コメント
	printf("Hello World");
	return 0;
}
\end{lstlisting}
% (省略)

実行例

f:id:yu00:20150514190319g:plain

オプション

\lstsetで指定できる主なオプションは次のようになります.

language

言語の指定.C言語ならCとします.
標準で使える言語は以下だそうです.

ABAP (R/2 4.3, R/2 5.0, R/3 3.1, R/3 4.6C, R/3 6.10), 
ACM, ACMscript, ACSL, Ada (2005, 83, 95), Algol (60, 68), 
Ant, Assembler (Motorola68k, x86masm), Awk (gnu, POSIX), 
bash, Basic (Visual), C (ANSI, Handel, Objective, Sharp), 
C++ (ANSI, GNU, ISO, Visual) Caml (light, Objective), CIL, 
Clean, Cobol (1974, 1985, ibm), Comal 80, 
command.com (WinXP), Comsol, csh, Delphi, Eiffel, Elan, 
erlang, Euphoria, Fortran (03, 08, 77, 90, 95), 
GAP, GCL, Gnuplot, hansl, Haskell, HTML, IDL (empty, CORBA), 
inform, Java (empty, AspectJ), JVMIS, ksh, 
Lingo, Lisp (empty, Auto), LLVM, Logo, Lua (5.0, 5.1, 5.2), 
make (empty, gnu), Mathematica (1.0, 3.0, 5.2), Matlab, 
Mercury, MetaPost, Miranda, Mizar, ML, Modula-2, MuPAD, 
NASTRAN, Oberon-2, OCL (decorative, OMG), Octave, Oz, 
Pascal (Borland6, Standard, XSC), Perl, PHP, PL/I, Plasm, 
PostScript, POV, Prolog, Promela, PSTricks, Python, R, Reduce, 
Rexx, RSL, Ruby, S (empty, PLUS), SAS, Scilab, sh, SHELXL, 
Simula (67, CII, DEC, IBM), SPARQL, SQL, tcl (empty, tk), 
TeX (AlLaTeX, common, LaTeX, plain, primitive), VBScript, 
Verilog, VHDL (empty, AMS), VRML (97), XML, XSLT
numbers

行番号表示位置.デフォルト:none(行番号なし),
他オプション:left,right

stepnumber

行番号をいくつとばしで表示するか.
5行ごとに行番号を表示したいときなど

numberstyle

行番号の書体

numbersep

行番号と本文の間隔.デフォルト:10pt
f:id:yu00:20150514203611g:plain

breaklines

行が長くなったときの自動改行.デフォルト:false

breakindent

breaklinesで改行した時のインデント量.デフォルト:20pt

frame

枠.デフォルト:none
他オプション:leftline,topline,bottomline,lines,single,shadowbox

framesep

frameまでの間隔

basicstyle

標準の書体

identifierstyle

キーワードでない文字の書体

commentstyle

コメントの書体

stringstyle

""で囲まれたなどの"文字"の書体

keywordstyle

キーワード(int, ifなど)の書体

ndkeywordstyle

キーワードその2の書体

columns

書体による列幅の違いを調整するか.
オプション:fixed,flexible,spaceflexible,fullflexible
f:id:yu00:20150514212830g:plain

その他

  • コメントの後には1文字スペースが必要です
  • \lstsetを使い途中で書体を変えることもできます.