verbatimを含む自作環境を定義する方法について

verbatimを含む自作環境を定義する方法について

- 村岡 の投稿
返信数: 7
verbatim環境を含む自作環境を定義したいのですが,どのように定義するのが``正解''なのでしょうか.

screen環境による枠内にverbatim環境を入れ,,文字サイズは\smallとしたいのですが,
こちらを参考に,fancybox.styを利用して,

\usepackage{ascmac}
\usepackage{fancybox}
\newenvironment{hoge}
{\VerbatimEnvironment\small\begin{screen}\begin{Verbatim}}
{\end{Verbatim}\end{screen}}

としてhoge環境を定義すると,ltjsarticleでは通るものの,jlreqでは通りませんでした.エラー文を読むと,fancyboxが古い命令である\ttを使っているのが原因なようです.

jlreqでも通る,所望の環境をつくるには,どう定義するのが良いのでしょうか.知恵をお貸しいただけると幸いです.
なお,lualatex,jlreqを使用しております.
村岡 への返信

Re: verbatimを含む自作環境を定義する方法について

- 和田 勇 の投稿
誰も答えないので付け焼き刃的な対応です。

以下の警告も気になるのですが、今回は警告ですのでとりあえずシカトしておきます
    (/usr/local/texlive/2022/texmf-dist/tex/luatex/luatexja/patches/lltjp-tascmac.s
ty{/usr/local/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map}
    warning  (map file): entry for 'ascgrp' already exists, duplicates ignored
    )

添付画像に示したように fancybox.sty で \tt とハードコードされているところを
\texttt に置き換えてみました。

ただし \begin{itemize}\item xxx \begin{hoge} ... のようにするとエラーになってしまう。
ですので、記述された内容によっては同様にエラーになってしまうかと思いますが、
その際は、可能な範囲で伏せ字処理などをおこなったソースとログを添付してください。
和田 勇 への返信

Re: verbatimを含む自作環境を定義する方法について

- 村岡 の投稿
ありがとうございます.
当方の環境ではitemizeなどの箇条書き環境中でもエラーは吐かず,コンパイルは通りました.ただし,フォントがセリフ体(デフォルトのままなので,Latin Modern?)になってしまい,Typewriter Typeになりませんでした.
念のため,ソース全文を貼っておきます.何かの参考になれば幸いです.

\documentclass{jlreq}
\usepackage{luatexja}
\usepackage{ascmac}
\usepackage{fancybox}
{\catcode`\ =12\gdef\ttspace{{\texttt }}}
\def\VerbatimFont{\texttt}
\def\VerbatimFont{\texttt}
\newenvironment{hoge}
{\VerbatimEnvironment\small\begin{screen}\begin{Verbatim}}
{\end{Verbatim}\end{screen}}
\begin{document}
ほげほげ
\begin{itemize}
\item 以下のように入力すれば,\LaTeX と表示される.
\begin{hoge}
\LaTeX
\end{hoge}
\end{itemize}
\end{document}

ちなみに,\tt->\textttとした部分を\ttfamilyで置換すると,普通通り,Typewriter Typeになるのですが,\textttではなく,\ttfamilyだと何か問題はあるのでしょうか.
\texttt{...}と{\ttfamily ...}は少々挙動が異なると,どこかで聞いたことがあるので,気になっております.
よろしければご教示いただきたいです.
村岡 への返信

Re: verbatimを含む自作環境を定義する方法について

- 和田 勇 の投稿
1) itemize 環境でコンパイルエラーになる件は、私のコーディングミス
    試行錯誤中に fancybox をコメントアウトしていた :-<

2) \texttt vs \ttfamilly
    かつて \bf \tt を多用していた時の癖がまた出てしまった。

    \texttt typewriter  ← 「t」だけが対象
    \texttt{typewriter}  ← 「typewriter」が対象
    { \ttfamily            }  ← {} 内の文字に影響する
和田 勇 への返信

Re: verbatimを含む自作環境を定義する方法について

- 村岡 の投稿
ありがとうございます.
今回のケースでは,\tt->\ttfamilyへの置換で大丈夫でしょうか.
質問ばかりで申し訳ありません.
村岡 への返信

Re: verbatimを含む自作環境を定義する方法について

- Takashima Jun の投稿
jlreq.clsを読みますと文献などの環境で
\jlreq@oldfontcommand@enable
を冒頭に
終わりに
\jlreq@oldfontcommand@disable
としていますので同様に環境を定義されればよいかと。
Takashima Jun への返信

Re: verbatimを含む自作環境を定義する方法について

- 村岡 の投稿
ありがとうございます.
jlreqのソースなどは見たこともなければ,見たところで理解できないので,このようなアドバイスはたいへんありがたいです.
Takashimaさんの助言の通り,\jlreq@oldfontcommand@enableを冒頭に,\jlreq@oldfontcommand@disableを終わりに入れるとうまいこと表示させることができました.
質問しなければ知ることができなかったのでたいへん助かりました.