Hulp bij schrijven macrocode met voorwaarden over de parameters

"Bas Dekker (TeXniek)" <[email protected]> Sun, 10 Dec 2017 12:46:05 +0100
Newsgroups gmane.comp.tex.dutch
Message-ID <[email protected]>
--===============8670033260620878028==
Content-Type: multipart/alternative; boundary="Apple-Mail=_A9C84B66-166B-41C6-BEC4-0A2A5B2D47C6"


--Apple-Mail=_A9C84B66-166B-41C6-BEC4-0A2A5B2D47C6
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii



Dag allemaal,=20


Ik loop vast op het schrijven van een macro in een class.=20

Het gaat om het volgende: ik wil een environment met twee argumenten. =
Het eerste is een plaatjesnaam is een breedte.

Alsik een plaatje heb, dan wil ik een minipage met een plaatje, en =
rechts daarvan een opsomming items. Als ik niets heb, dan wil ik een =
opsomming op de hele breedte. De verhouding tussen plaatje en tekst is =
default 1/4 versus 3/4. Heb ik iets in het tweede argument, dan is dat =
de breedte van de minipage van het plaatje, en ik pas de breedtes aan. =
Ik hou rekening met 5% marge.

Dit is mijn code :

\newenvironment{cbkingredients}[2]{%
\def\lingr{.25}%
\def\ringr{.70}%
\ifthenelse{\equal{#2}{}}{}{%
\def\lingr{##2}%
\def\ringr{.95 - ##2}}%
\ifthenelse{\equal{#1}{}}{}{%
\begin{minipage}[t]{\lingr\textwidth}%
\includegraphics[width=3D.95*\lingr \textwidth]{#1}%
\end{minipage}
\begin{minipage}[t]{\ringr\textwidth}%
}%
\begin{itemize}
}{%
\end{itemize}%
\ifthenelse{\equal{#1}{}}{}{\end{minipage}}%
}

(ik laad hoger in de source het calc package, zodat ik * kan gebriuken =
om lengtes te vermenigvuldigen)

Ik heb goed begrepen dat ik bij macro's binnen macro's (dus bij \def) de =
argument van een dubbele pound-sign moet voorzien (waarom? En heb ik het =
goed gelezen?)



Maar als ik XeLaTeX run, op, bijvoorbeeld:

\begin{cbkingredients}{img/nutmeg.jpg}{.2}
\item Nutmeg
\item Milk
\end{cbkingredients}


dan krijg ik "Illegal parameter number in definition of =
\endcbkingredients".=20

Ik heb van alles geprobeerd, maar de boodschap blijft komen.=20

Weten jullie wat ik fout doe?

Bedankt alvast!






Bas Dekker=20
(sub-account voor TeXniek)

Postbus 11088
1001 GB Amsterdam

+31 (0)6 25 00 32 78

[email protected]









--Apple-Mail=_A9C84B66-166B-41C6-BEC4-0A2A5B2D47C6
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html =
charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; -webkit-line-break: =
after-white-space;"><div><br></div><div><br></div><div>Dag =
allemaal,&nbsp;</div><div><br></div><div><br></div><div>Ik loop vast op =
het schrijven van een macro in een =
class.&nbsp;</div><div><br></div><div>Het gaat om het volgende: ik wil =
een environment met twee argumenten. Het eerste is een plaatjesnaam is =
een breedte.</div><div><br></div><div>Alsik een plaatje heb, dan wil ik =
een minipage met een plaatje, en rechts daarvan een opsomming items. Als =
ik niets heb, dan wil ik een opsomming op de hele breedte. De verhouding =
tussen plaatje en tekst is default 1/4 versus 3/4. Heb ik iets in het =
tweede argument, dan is dat de breedte van de minipage van het plaatje, =
en ik pas de breedtes aan. Ik hou rekening met 5% =
marge.</div><div><br></div><div>Dit is mijn code =
:</div><div><br></div><div><div><font =
face=3D"Courier">\newenvironment{cbkingredients}[2]{%</font></div><div><fo=
nt face=3D"Courier">\def\lingr{.25}%</font></div><div><font =
face=3D"Courier">\def\ringr{.70}%</font></div><div><font =
face=3D"Courier">\ifthenelse{\equal{#2}{}}{}{%</font></div><div><font =
face=3D"Courier">\def\lingr{##2}%</font></div><div><font =
face=3D"Courier">\def\ringr{.95 - ##2}}%</font></div><div><font =
face=3D"Courier">\ifthenelse{\equal{#1}{}}{}{%</font></div><div><font =
face=3D"Courier">\begin{minipage}[t]{\lingr\textwidth}%</font></div><div><=
font face=3D"Courier">\includegraphics[width=3D.95*\lingr =
\textwidth]{#1}%</font></div><div><font =
face=3D"Courier">\end{minipage}</font></div><div><font =
face=3D"Courier">\begin{minipage}[t]{\ringr\textwidth}%</font></div><div><=
font face=3D"Courier">}%</font></div><div><font =
face=3D"Courier">\begin{itemize}</font></div><div><font =
face=3D"Courier">}{%</font></div><div><font =
face=3D"Courier">\end{itemize}%</font></div><div><font =
face=3D"Courier">\ifthenelse{\equal{#1}{}}{}{\end{minipage}}%</font></div>=
<div><font face=3D"Courier">}</font></div></div><div><br></div><div>(ik =
laad hoger in de source het calc package, zodat ik * kan gebriuken om =
lengtes te vermenigvuldigen)</div><div><br></div><div>Ik heb goed =
begrepen dat ik bij macro's binnen macro's (dus bij \def) de argument =
van een dubbele pound-sign moet voorzien (waarom? En heb ik het goed =
gelezen?)</div><div><br></div><div><br></div><div><br></div><div>Maar =
als ik XeLaTeX run, op, =
bijvoorbeeld:</div><div><br></div><div><div><font =
face=3D"Courier">\begin{cbkingredients}{img/nutmeg.jpg}{.2}</font></div><d=
iv><font face=3D"Courier">\item Nutmeg</font></div><div><font =
face=3D"Courier">\item Milk</font></div><div><font =
face=3D"Courier">\end{cbkingredients}</font></div></div><div><br></div><di=
v><br></div><div>dan krijg ik "<font face=3D"Courier">Illegal parameter =
number in definition of =
\endcbkingredients</font>".&nbsp;</div><div><br></div><div>Ik heb van =
alles geprobeerd, maar de boodschap blijft =
komen.&nbsp;</div><div><br></div><div>Weten jullie wat ik fout =
doe?</div><div><br></div><div>Bedankt =
alvast!</div><div><br></div><div><br></div><div><br></div><div><br></div><=
br><div apple-content-edited=3D"true">
<span class=3D"Apple-style-span" style=3D"border-collapse: separate; =
border-spacing: 0px;"><span class=3D"Apple-style-span" =
style=3D"border-collapse: separate; color: rgb(0, 0, 0); font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant: normal; =
font-weight: normal; letter-spacing: normal; line-height: normal; =
orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; =
widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; =
-webkit-border-vertical-spacing: 0px; =
-webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: =
auto; -webkit-text-stroke-width: 0px; "><div style=3D"word-wrap: =
break-word; -webkit-nbsp-mode: space; -webkit-line-break: =
after-white-space; "><span class=3D"Apple-style-span" =
style=3D"border-collapse: separate; color: rgb(0, 0, 0); font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant: normal; =
font-weight: normal; letter-spacing: normal; line-height: normal; =
orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; =
widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; =
-webkit-border-vertical-spacing: 0px; =
-webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: =
auto; -webkit-text-stroke-width: 0px; "><div style=3D"word-wrap: =
break-word; -webkit-nbsp-mode: space; -webkit-line-break: =
after-white-space; "><span class=3D"Apple-style-span" =
style=3D"border-collapse: separate; color: rgb(0, 0, 0); font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant: normal; =
font-weight: normal; letter-spacing: normal; line-height: normal; =
orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; =
widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; =
-webkit-border-vertical-spacing: 0px; =
-webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: =
auto; -webkit-text-stroke-width: 0px; "><div><div><b><br =
class=3D"Apple-interchange-newline"><font class=3D"Apple-style-span" =
face=3D"Helvetica-Bold">Bas Dekker&nbsp;</font></b></div><div><font =
class=3D"Apple-style-span" face=3D"Helvetica-Bold" size=3D"2"><span =
class=3D"Apple-style-span" style=3D"font-size: 10px; "><b>(sub-account =
voor TeXniek)</b></span></font></div><div><br =
class=3D"webkit-block-placeholder"></div><div><span =
class=3D"Apple-style-span" style=3D"font-size: small; ">Postbus =
11088</span></div><div><span class=3D"Apple-style-span" =
style=3D"font-size: small; ">1001 GB Amsterdam</span></div><div><font =
class=3D"Apple-style-span" size=3D"2"><br =
class=3D"webkit-block-placeholder"></font></div><div><font =
class=3D"Apple-style-span" size=3D"2">+31 (0)6 25 00 32 =
78</font></div><div><font class=3D"Apple-style-span" size=3D"2"><br =
class=3D"webkit-block-placeholder"></font></div><div><font =
class=3D"Apple-style-span" size=3D"2"><span class=3D"Apple-style-span" =
style=3D"font-size: 10px; "><a =
href=3D"mailto:[email protected]">[email protected]</a></span></font><=
/div><div><br =
class=3D"webkit-block-placeholder"></div></div><div><br></div><div><br =
class=3D"webkit-block-placeholder"></div></span><br =
class=3D"Apple-interchange-newline"></div></span><br =
class=3D"Apple-interchange-newline"></div></span><br =
class=3D"Apple-interchange-newline"></span><br =
class=3D"Apple-interchange-newline">
</div>
<br></body></html>=

--Apple-Mail=_A9C84B66-166B-41C6-BEC4-0A2A5B2D47C6--

--===============8670033260620878028==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KVGVYLU5MIG1h
aWxpbmcgbGlzdApUZVgtTkxAbnRnLm5sCmh0dHBzOi8vbWFpbG1hbi5udGcubmwvbWFpbG1hbi9s
aXN0aW5mby90ZXgtbmwK

--===============8670033260620878028==--