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

  • 2
    Like
  • 0
    Comment
More than 1 year has 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


参考文献