複数環境に適用できるコマンドを1つの環境のみに適用したい

Re: 複数環境に適用できるコマンドを1つの環境のみに適用したい

- Cmplstof B の投稿
返信数: 0

既に環境命令を再定義するという解決策が示されていますが,もう少し〝安全な〟方法もあります。

LaTeX2εで「列挙環境 (listing environment)」(記号箇条や番号箇条の総称) を組むに際して確実に用いられる\@trivlistという命令に, 一連のコードを元の命令を書き換えることなく追加します。 追加するのは 「もしも現行環境が“enumerate”という名前であれば, \leftmarginの寸法を調整し,そうでなければ調整しない」 という内容のコードです。
なお,「元の命令を書き換えることなく追加」する機能は, LaTeX2ε側で用意されています (外部からの利用を想定しているかどうか分かりませんが……)。

以下に例示します。\leftmarginの寸法をお好きな値にして, \begin{document}の前に置いて下さい。


\makeatletter
\newcommand*{\x@target@envname}{enumerate}%対象とする環境の名前
\g@addto@macro\@trivlist{%`\@trivlist'命令に追加する
\ifx\x@target@envname\@currenvir\relax%もしも現行環境名が対象環境名であれば……
\setlength{\leftmargin}{50pt}%分かり易くデカい幅に
\fi
}
\makeatother

{enumerate}環境以外の列挙環境に対しても, \x@target@envnameの部分を適宜変更することで対応できると思います。