
現在アクティブな環境に基づいて、異なる見出しスタイルを挿入するコマンドが必要です。環境はマクロ経由でアクセスできるはずだとわかりました\@currenvir
が、私の場合は「else」ブランチが実行されたため、何も起こりませんでした。
\newcommand{\head}[1]{
\ifthenelse{\equal{\@currenvir}{itemize}}{
\textbf{#1}
}{
}
}
答え1
\@currenvir
の展開に対して文字列比較を実行する必要がありますitemize
。演算子を\ifthenelse
使用すると\equal
これが可能になりますが、マジック\makeatletter
...\makeatother
ラッパーが不足しています(何をす\makeatletter
べき\makeatother
か?)。
投稿を検討してくださいパッケージが廃止されたのはなぜですかifthen
?、私はe-TeXを使っ\pdfstrcmp
て弦以下に展開可能な比較。(数値の)結果が 0 の場合は一致し、それ以外の場合は 0 以外になります。
\documentclass{article}
\makeatletter
\newcommand{\head}[1]{%
\ifnum\pdfstrcmp{\@currenvir}{itemize}=0
\textbf{#1}% Inside itemize
\else
\textit{#1}% Not inside itemize
\fi
}
\makeatother
\begin{document}
\begin{itemize}
\item \head{First} item
\end{itemize}
\begin{enumerate}
\item \head{Second} item
\end{enumerate}
\end{document}
上記の使用法は、ネストされたitemize
場合でも機能するはずです。
次の条件も使用できます\ifx
。
\makeatletter
\def\specialenvironment{itemize}
\newcommand{\head}[1]{%
\ifx\@currenvir\specialenvironment
\textbf{#1}% Inside "special environment"
\else
\textit{#1}% Not inside "special environment"
\fi
}
\makeatother
の頻繁な使用にも注意してください%
。動機については、%
行末のパーセント記号 ( ) は何の目的で使用されますか?