Enquanto o TeX fornece provisão direta para comandos, o LaTeX adiciona um conceito de “ambiente”; ambientes executam uma ação em um bloco (de alguma coisa ou outra) em vez de apenas fazer algo em um lugar em seu documento.
Um ambiente totalmente trivial poderia mudar a fonte usada em uma parte do texto, como
\newenvironment{monoblock}%
{\ttfamily}%
{}
que define um monoblock que pode ser usado como
\begin{monoblock}
algum texto configurado em espaço simples
\end{monoblock}
que vai parecer com:
algum texto configurado em espaço simplesde modo que é um exemplo particularmente simples. Um ambiente mais complicado é introduzido por
\begin{document}; parece simples, mas precisa de todo tipo de código especial do TeX para que funcione
‘transparente’; a maioria dos ambientes é mais elaborada do que
monoblock e muito mais simples do que
document.
Um ambiente coloca seu conteúdo dentro de um grupo de TeX,de modo que os comandos usados dentro do ambiente não ‘vazem’ — o ambiente
monoblock , acima, restringe seu efeito aos seus próprios conteúdos (o material entre o \begin{monoblock}
e o \end{monoblock}), que é exatamente o que você precisa para esse tipo de coisa.
Então, esses são ambientes “simples”; o monoblock, acima, não vai muito além do
{\ttfamily algum texto configurado em espaço simples}
apesar de que muitos ambientes úteis são igualmente simples (de olhar). Alguns, como verbatim, parecem simples, mas na verdade são muito complicados por dentro.
O LaTeX também permite argumentos para um ambiente:
\newenvironment{fontblock}[1]%
{#1\selectfont}%
{}
e a utilização de fontblock como em:
\begin{fontblock}{\ttfamily}
produziria o mesmo efeito que o ambiente monoblock.
Ambientes também podem ter argumentos opcionais, da mesma forma que os comandos:
\newenvironment{normaltext}[1][\itshape]%
{#1}%
{}
que vai configurar seu corpo em itálico, porém
\begin{normaltext}[\ttfamily]
...
\end{normaltext}
vai observar seu argumento opcional e se comportar da mesma maneira que o
monoblock com o qual começamos.
Observe que um argumento de ambiente (obrigatório ou opcional)
não é passado para o texto final ‘\end’ do ambiente — isso é especificado como uma macro sem argumentos, de modo que
\newenvironment{normaltext}[1][\itshape]%
{#1}%
{\typeout{what was #1, again?}
produz uma mensagem de erro
Então, se você precisar passar um argumento de ambiente para o código final, você deve embalá-lo em uma macro própria:! Número de parâmetro ilegal na definição de \endnormaltext.
\newenvironment{normaltext}[1][Intro]%
{#1%
\newcommand{\foo}{#1}}%
{\typeout{what was \foo{}, again?}
This answer last edited: 2013-02-20
This question on the Web: http://latex.net.br/faq/FAQ-whatenv.html
Do you have any question? Ask on: latex.net.br - we love qood questions!