@k_hanazuki さんが横でやってたのを見てメモメモ。
TeX でソースコードを綺麗に表示するのに便利な listings パッケージ(これについては詳しくは listings.sty: TeX パッケージ などを参照してください)。\begin{lstlisting}...
する代わりに、言語毎に \begin{C++}...
のような環境を用意したい場合、どうすればいいでしょう?
実は、\newenvironment
を使って次のようにしようとすると、上手くいきません:
bad-newenvironment-lstlisting.tex
\documentclass{article}
\usepackage{listings}
\lstset{language=C++}
\newenvironment{C++}{\begin{lstlisting}}{\end{lstlisting}}
\begin{document}
\begin{C++}
#include <iostream>
int main () {
std::cout << "Hello, World!" << std::endl;
return 0;
}
\end{C++}
\end{document}
エラーすら出ないのでよく分かりません:
% platex bad-newenvironment-lstlisting.tex
This is pTeXk, Version 3.141592-p3.1.11 (euc) (Web2C 7.5.4)
%&-line parsing enabled.
(./bad-newenvironment-lstlisting.tex
pLaTeX2e <2006/11/10>+0 (based on LaTeX2e <2009/09/24> patch level 0)
(/usr/share/texmf-texlive/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/share/texmf-texlive/tex/latex/base/size10.clo))
(/usr/share/texmf-texlive/tex/latex/listings/listings.sty
(/usr/share/texmf-texlive/tex/latex/graphics/keyval.sty)
(/usr/share/texmf-texlive/tex/latex/listings/lstmisc.sty)
(/usr/share/texmf-texlive/tex/latex/listings/listings.cfg))
(/usr/share/texmf-texlive/tex/latex/listings/lstlang1.sty)
(/usr/share/texmf-texlive/tex/latex/listings/lstlang1.sty)
(/usr/share/texmf-texlive/tex/latex/listings/lstmisc.sty)
No file bad-newenvironment-lstlisting.aux.
(/usr/share/texmf-texlive/tex/latex/base/omlcmr.fd)
(/usr/share/texmf-texlive/tex/latex/base/omscmr.fd))
*
そこで、こういう場合には \lstnewenvironment
を使います。詳しくは The Listings Package (Manual PDF) を参照してください。
lstnewenvironment.tex
\documentclass{article}
\usepackage{listings}
\lstnewenvironment{C++}
{\lstset{language=C++}}
{}
\begin{document}
\begin{C++}
#include <iostream>
int main () {
std::cout << "Hello, World!" << std::endl;
return 0;
}
\end{C++}
\end{document}
これで問題なくタイプセットできました。めでたしめでたし。
ソースファイルとか: lstlisting の新しい環境を定義する \lstnewenvironment ref: http://qiita.com/items/a971b925fc6526d324c1 — Gist
参考文献
- "listings.sty: TeX パッケージ", http://www.biwako.shiga-u.ac.jp/sensei/kumazawa/tex/listings.html , 2012-06-23 23:54
- "The Listings Package", http://get-software.net/macros/latex/contrib/listings/listings.pdf , 2012-06-23 20:38