lstlisting の新しい環境を定義する \lstnewenvironment

More than 5 years have passed since last update.

@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



参考文献