
Windows で MiKTeX を PDFLaTeX と共に使用する
2 つのミニページを含む環境を作成したいと思います。最初のミニページには説明項目があり、2 番目のミニページには小さなテキスト (または画像) があります。次のコードは、希望どおりに動作します。
{
\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}
}
この種のコンテンツを簡単に導入できるように、マクロまたは環境を作成したいと考えました。そこで、2 つの引数を持つ次の環境を作成します。
\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}
}
しかし、それを使おうとすると
\begin{myenvironment}{Label}{Second minipage text}
Description text
\end{myenvironment}
Illegal parameter number in definition of \endmyenvironment.
宣言を終了する行を指していますnewenvironment
。これに数時間苦労した後、二重ハッシュ ( ) を使用しようとしたところ、と という##
2 つの新しいエラーが発生しました。今回は、環境を使用したいときにエラーが行を指していましたが、定義に問題はありませんでした。You can't use `macro parameter character #' in restricted horizontal mode
You can't use `macro parameter character #' in internal vertical mode
何が間違っているのでしょうか?
答え1
それは##
私の問題とは何の関係もありませんでした。カスタム環境の終了コード内で引数を使用することはできません回避策はありますが、私の意見では、これは持つ必要があります機能。可能な回避策(補助変数)を使用して、次の作業環境に到達しました。
\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}
}
この解決策は遅れて到着しました。その間に、私は3 つの引数を持つ\newcommand
aで問題を解決することができました。
\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
}
以下で使用できます:
\myminipages{Label}{Second minipage text}{Description text}
それが役に立てば幸い。
[a]少なくともこの用途においては、このnewcommand
アプローチが他のアプローチよりも優れている点は特にないようです。詳細newenvironment
ここそしてここ。