MACでlisting.sty,jlisting.styを使ってのプログラムソースの挿入ができない

MACでlisting.sty,jlisting.styを使ってのプログラムソースの挿入ができない

- miya ta の投稿
返信数: 9
TeXにC++ソースコードを貼るためにlitings,jlistin.styを使いたいと考えました.パソコンの調べたところ,listingsはすでにインストールされていたので,jlisting.styを
http://sourceforge.jp/projects/mytexpert/downloads/26068/jlisting.sty.bz2/
からダウンロードし,とりあえずタイプセットしたい.texファイルと同じフォルダに保存しました.

しかしタイプセットをしてみると,なぜかソースコードの挿入はされておらず,\lstinputlisting 以降のTexがまったくタイプセットされませんでした.またしかし同じファイルをwindowsのTeXインストーラ3環境でタイプセットすると普通に出力されます.いろいろ調べたのですが解決しません.
初心者で申し訳ないのですが,原因はお分かりになりますでしょうか.

以下のような環境で行っています..
OS: MAC OSX Yosemite
TeX:MAC TEX 小川版Drag and Drop UpTeX
エディタ:TeXShop 3.46

TeXソース詳細
文頭に
¥usepackage{listings,jlisting}
\lstset{language=c++, basicstyle=\ttfamily\scriptsize, commentstyle=\textit, classoffset=1, keywordstyle=\bfseries, frame=tRBl, framesep=5pt, showstringspaces=false, numbers=left, stepnumber=1, numberstyle=\tiny, tabsize=2 }


本文に
\lstinputlisting[caption=キャプション,label=ソースコード]{ファイル名}

jlistingのインストールと使い方については以下のサイトを参考にしました.
http://d.hatena.ne.jp/mallowlabs/20061226/1167137637
http://suxisuxido.com/tex-listings/#1_listings

miya ta への返信

Re: MACでlisting.sty,jlisting.styを使ってのプログラムソースの挿入ができない

- Akira Kakuto の投稿
> しかしタイプセットをしてみると,なぜかソースコード
> の挿入はされておらず,\lstinputlisting 以降が
> まったくタイプセットされませんでした.
... ...
> 初心者で申し訳ないのですが,原因はお分かりになります
> でしょうか.

コンパイル時のメッセージや log ファイルを見ると
何かわかるかも知れません。
Akira Kakuto への返信

Re: MACでlisting.sty,jlisting.styを使ってのプログラムソースの挿入ができない

- miya ta の投稿
返信ありがとうございます.早速メッセージを見てみました.プログラムの貼り付け無しの場合と有りの場合で比較したところ,下記のようなメッセージが増えていることがわかりました.

LaTeX Font Warning: Font shape `JT1/mc/m/it' undefined
(Font) using `JT1/mc/m/n' instead on input line 68.


LaTeX Font Warning: Font shape `JY1/mc/m/it' undefined
(Font) using `JY1/mc/m/n' instead on input line 68.

! TeX capacity exceeded, sorry [save size=5000].
<to be read again>
relax
l.68 ...tion=sampe,label=sample]{program/test.cpp}

No pages of output.
Transcript written on TEST.log.
TEST.dvi -> TEST.pdf
[1][2]
7171 bytes written

TEST.texというのが今タイプセットしているTeXファイルで68行目でtest.cppを読み込んでいます.
フォントが変わっている,作業メモリが足りないということはわかりましたが,原因がわかりません.
申し訳ありませんが,何か心当たりはありますでしょうか.

miya ta への返信

Re: MACでlisting.sty,jlisting.styを使ってのプログラムソースの挿入ができない

- 匿 名 の投稿
フォントについては気にしないでも良いと思います.

作業メモリの方は,以下の記事が参考になるのではないでしょうか?

http://d.hatena.ne.jp/shio_chan/20120622/1340343680

私もMacを使っていますが,エラーを再現できないので,上記の記事で解決するかは確認出来ません.
エラーが再現できる最小のサンプルをご呈示いただければ,もう少しお手伝い出来るかも知れません.

追記
最初のご投稿ではバックスラッシュと円記号が混じっていますが,ソースファイル中ではバックスラッシュに統一されているのですよね?
¥usepackage{listings,jlisting}

匿 名 への返信

Re: MACでlisting.sty,jlisting.styを使ってのプログラムソースの挿入ができない

- miya ta の投稿
バックスラッシュと円記号は統一しています.わざわざありがとうございます.

色々と原因を探っていった結果,私の研究室専用のstyファイルの中の下記の記述をコメントアウトすると問題無く動くということがわかりました.

¥IfFileExists{hyperref.sty}{¥RequirePackage{hyperref}}%
{¥typeout{hyperref.sty is not loaded so you will not get active hyperlinks}%
¥providecommand{¥href}[2]{#2}%
}

このstyファイルは研究室で受け継がれてきたものでずいぶん昔から更新していないはずのですが,こちらの記述に何か問題となりそうな部分がありますでしょうか.本当に何度も何度もすみません,

miya ta への返信

Re: MACでlisting.sty,jlisting.styを使ってのプログラムソースの挿入ができない

- 前田 一貴 の投稿
示されたコードは,hyperref というハイパーリンクを入れるためのパッケージがシステムに存在していたら
読み込んで,そうでなければ \href を無効にせよ,というものです.


実際のソースがないので何とも言えませんが,listings は確か ASCII 文字を全部 active にして
\def するので,どこかに閉じられていない \begingroup が入っていて,それのせいでレジスタ復元用の
メモリ領域を食い潰してしまう,というようなことが起こっているのではないでしょうか.

\documentclass[dvipdfmx]{jsarticle}
\begingroup                    % この2行のどちらかをコメントアウトすると
\usepackage{hyperref}          % save_size=5000 でも通る.
\usepackage{listings,jlisting}
\lstset{language=c++, basicstyle=\ttfamily\scriptsize, commentstyle=\textit, classoffset=1, keywordstyle=\bfseries, frame=tRBl, framesep=5pt, showstringspaces=false, numbers=left, stepnumber=1, numberstyle=\tiny, tabsize=2 }
\begin{document}
\lstinputlisting[caption=sample,label=sample]{program/test.cpp}
\end{document}

TeX Live 2014 や最近の W32TeX だと,save_size=100000 なので,上のコードでも通ります.
\endgroup していないので
(\end occurred inside a group at level 1)
という警告は出ますが.
前田 一貴 への返信

Re: MACでlisting.sty,jlisting.styを使ってのプログラムソースの挿入ができない

- miya ta の投稿
非常に具体的なアドバイスをありがとうございます.
hyperrefが使えないのは面倒なので\begingroupをコメントアウトするか,texmf.cnfを弄ってsave_sizeを増やそうと思います.
そこでさらに質問で恐縮なのですが,先ほど.styファイルと.texファイルの中を"\begingroup"で検索してみたのですが見つかりません.調べたところ\begingroupと中括弧はほぼ等価とのことですが,どこかに余分な{に入っているとの認識でよいのでしょうか.


miya ta への返信

Re: MACでlisting.sty,jlisting.styを使ってのプログラムソースの挿入ができない

- 前田 一貴 の投稿
> どこかに余分な{に入っているとの認識でよいのでしょうか.
その可能性もありますが,グルーピングが始まる箇所は他にも例えば \begin{...} などがあるので,
問題のソースを見ないことにはこれ以上のことは何も言えないです.
save_size=5000 は最近の TeX ディストリビューションのデフォルトと比べると非常に小さいので,
他にも大規模なパッケージを使っていたりすると,通常使用でもこのエラーが起こることがあるのかもしれないです.
原因がどうしても気になるのでなければ,save_size の値を増やすのが一つの解決法なのではないでしょうか.
前田 一貴 への返信

Re: MACでlisting.sty,jlisting.styを使ってのプログラムソースの挿入ができない

- miya ta の投稿
本当に何から何までありがとうございます.全文を貼れればよいのですが,長すぎてできませんでした.また時間のあるときにソースを切り分けて原因を調査してみます.
私の拙い説明に付き合っていただきありがとうございました.これからもよろしくお願いいたします.
miya ta への返信

Re: MACでlisting.sty,jlisting.styを使ってのプログラムソースの挿入ができない

- miya ta の投稿
お世話になりました.save_sizeを増やすことで問題は解決しました.途中戸惑った部分もありましたので,今後同じようなミスに嵌る方がいないよう,行った対策をこの場を借りてご報告させていただきます.

まずMacintosh HD ▸ usr ▸ local ▸ texlive ▸ 2014フォルダのtexmf.cnfを見ましたが,save_sizeに関する記述はありませんでした.
次にMacintosh HD ▸ usr ▸ local ▸ texlive ▸ texmf-local ▸ web2cフォルダのtexmf.cnfを見ましたが,save_size=100000となっていたのでこのファイルでは無いと判断しました.
最終的にMacintosh HD ▸ アプリケーション ▸ UpTeX.app ▸ teTeX ▸ share ▸ texmf ▸ web2cフォルダ内にtexmf.cnfを見つけ,save_size=5000 の記述がありましたので,save_size=50000に変えたところタイプセットが通るようになりました.

返す返すありがとうございました.