
Quiero tener un comando para insertar un estilo de encabezado diferente según el entorno que esté activo actualmente. Descubrí que se debería poder acceder al entorno mediante una macro \@currenvir
, pero para mí, la rama "else" se ejecuta, por lo que no pasó nada.
\newcommand{\head}[1]{
\ifthenelse{\equal{\@currenvir}{itemize}}{
\textbf{#1}
}{
}
}
Respuesta1
Debe realizar una comparación de cadenas con la expansión de \@currenvir
Against itemize
. \ifthenelse
con el \equal
operador hace esto, pero te falta un envoltorio mágico \makeatletter
... \makeatother
(ver¿Qué hacer \makeatletter
y \makeatother
hacer?).
Considere la publicación¿Por qué el paquete está ifthen
obsoleto?, He usado el e-TeX \pdfstrcmp
para realizar uncadenacomparación que se puede ampliar a continuación. Si el resultado (numeral) es 0, tenemos una coincidencia; de lo contrario, no es cero:
\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}
El uso anterior debería funcionar itemize
también para anidados.
También puedes utilizar el siguiente \ifx
condicional:
\makeatletter
\def\specialenvironment{itemize}
\newcommand{\head}[1]{%
\ifx\@currenvir\specialenvironment
\textbf{#1}% Inside "special environment"
\else
\textit{#1}% Not inside "special environment"
\fi
}
\makeatother
Tenga en cuenta también el uso frecuente de %
. Para la motivación, ver¿Para qué sirven los signos de porcentaje ( %
) al final de las líneas?