
Usando MiKTeX com PDFLaTeX no Windows
Quero criar um ambiente que contenha duas minipáginas; o primeiro possui um item de descrição e o segundo possui um pequeno texto (ou imagem). Este trecho de código funciona como eu quero:
{
\noindent
\begin{minipage}{0.5\textwidth}
\begin{description}
\item[Label] Description
\end{description}
\end{minipage}\hfill
\begin{minipage}{0.3\textwidth}
Second minipage
\end{minipage}
}
Eu queria criar uma macro ou ambiente para facilitar a introdução desse tipo de conteúdo. Então crio o seguinte ambiente com dois argumentos:
\newenvironment{myenvironment}[2]% 1:label, 2:second minipage text
{%
\noindent
\begin{minipage}{0.5\textwidth}
\begin{description}
\item[#1] % Description
}%
{%
\end{description}
\end{minipage}\hfill
\begin{minipage}{0.3\textwidth}
#2
\end{minipage}
}
Mas quando tento usá-lo com
\begin{myenvironment}{Label}{Second minipage text}
Description text
\end{myenvironment}
Eu aponto Illegal parameter number in definition of \endmyenvironment.
para a linha que finaliza a newenvironment
declaração. Depois de algumas horas lutando com isso, tentei usar hashes duplos ( ##
) e obtive dois novos erros diferentes: You can't use `macro parameter character #' in restricted horizontal mode
e You can't use `macro parameter character #' in internal vertical mode
. Dessa vez os erros apontavam para as falas quando eu queria usar o ambiente, mas não tive reclamações quanto à definição.
O que estou fazendo de errado?
Responder1
Não teve ##
nada a ver com o meu problema. Parece quevocê não pode usar argumentos dentro do código de fechamento ou final de um ambiente personalizado. Existem soluções alternativas para isso, mas na minha opinião isso deveria ser umdeve terrecurso. Usando uma possível solução alternativa --- uma variável auxiliar ---, cheguei a este ambiente de trabalho:
\newenvironment{myenvironment}[2]%
{%
\def\myenvargumentII{#2}
\noindent
\begin{minipage}{0.5\textwidth}
\begin{description}
\item[#1] % Description
}%
{%
\end{description}
\end{minipage}\hfill
\begin{minipage}{0.3\textwidth}
\myenvargumentII
\end{minipage}
}
Esta solução chegou tarde. Entretanto consegui resolver o meu problema com um \newcommand
a com 3 argumentos:
\newcommand{\myminipages}[3]% 1:label, 2:secondminipage, 3:Description
{%
\noindent
\begin{minipage}{0.5\textwidth}
\begin{description}
\item[#1] #3
\end{description}
\end{minipage}\hfill
\begin{minipage}{0.3\textwidth}
#2
\end{minipage}
\medskip % vertical space
}
Que pode ser usado com:
\myminipages{Label}{Second minipage text}{Description text}
Espero que ajude.
[a] Parece que não há nenhuma vantagem particular da newcommand
abordagem sobre a newenvironment
abordagem, pelo menos para este uso. Maisaquieaqui.