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
que define um\newenvironment{monoblock}% {\ttfamily}% {}
monoblock
que pode ser usado como
que vai parecer com:\begin{monoblock} algum texto configurado em espaço simples \end{monoblock}
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
apesar de que muitos ambientes úteis são igualmente simples (de olhar). Alguns, como{\ttfamily algum texto configurado em espaço simples}
verbatim
, parecem simples, mas na verdade são muito complicados por dentro.
O LaTeX também permite argumentos para um ambiente:
e a utilização de\newenvironment{fontblock}[1]% {#1\selectfont}% {}
fontblock
como em:
produziria o mesmo efeito que o ambiente\begin{fontblock}{\ttfamily}
monoblock
.
Ambientes também podem ter argumentos opcionais, da mesma forma que os comandos:
que vai configurar seu corpo em itálico, porém\newenvironment{normaltext}[1][\itshape]% {#1}% {}
vai observar seu argumento opcional e se comportar da mesma maneira que o\begin{normaltext}[\ttfamily] ... \end{normaltext}
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
produz uma mensagem de erro\newenvironment{normaltext}[1][\itshape]% {#1}% {\typeout{what was #1, again?}
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!