
현재 활성화된 환경에 따라 다른 제목 스타일을 삽입하는 명령을 갖고 싶습니다. 매크로를 통해 환경에 액세스할 수 있어야 한다는 것을 알았지 \@currenvir
만 제 경우에는 "else" 분기가 실행되므로 아무 일도 일어나지 않았습니다.
\newcommand{\head}[1]{
\ifthenelse{\equal{\@currenvir}{itemize}}{
\textbf{#1}
}{
}
}
답변1
\@currenvir
against 확장을 사용하여 문자열 비교를 수행해야 합니다 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
을 자주 사용한다는 점도 참고하세요 %
. 동기는 다음을 참조하세요.%
줄 끝에 백분율 기호( )를 사용하는 방법은 무엇입니까 ?