0

I want to redefine an environment that include the environment alignat*.

I discovered that I can't do that :

\newenvironment{variables}
{  \paragraph{Variables :}

\begin{alignat*}{2} }
{  \end{endalignat*} }

so the solution I found is to use the command \alignat but this way, the equations are numebered and I won't.

\newenvironment{variables}
{  \paragraph{Variables :}

\alignat*{2} }
{  \endalignat* }

So how can I do to include \alignat* in my new environment keeping the star ?

2 Answers 2

2

Why define \foo? May be I missed something but you can inglude \csname inside the definitions

\newenvironment{variables}
  {\paragraph{Variables :}
   \csname alignat*\endcsname{2}}
  {\csname endalignat*\endcsname}
3
  • hmm actually you can (so +1:-) although it's less efficient in both space and time, although I was thinking when I wrote it that the environment detection trickery that the ams alignments do would require the command token exposed, but I think you're right that isn't actually needed here. Oct 11, 2014 at 22:38
  • @DavidCarlisle I think this has been the first tick I've borrowed from someone.
    – Manuel
    Oct 12, 2014 at 13:22
  • Beware, keep doing that and you'll turn into egreg, you wouldn't want that:-) Oct 12, 2014 at 14:49
2

\csname endalignat*\endcsname expands to the command \endalignat* that you can't normally type. So \foo here is a helper macro that makes the environment definition that you intended except that the command names are passed as arguments #1 and #2, then \expandafter is used to make the command names socthe construction is the same as

\foo{\alignedat*}{\endalignedat*}

but with * interpreted as part of the command name, as if it were a letter.

\documentclass{article}

\usepackage{amsmath}



\def\foo#1#2{%
\newenvironment{variables}
{\paragraph{Variables :}
#1{2}}
{#2}}
\expandafter\foo
  \csname alignat*\expandafter\endcsname
  \csname endalignat*\endcsname

\begin{document}

\begin{variables}
a&b\\
aaa&bbb
\end{variables}

\end{document}
7
  • Can you explain how does it work please ?
    – Saroupille
    Oct 11, 2014 at 10:18
  • @Saroupille added some notes:-) Oct 11, 2014 at 11:02
  • Ok thanks ! I just don't understand the \expandafter command. If we don't use it, what happens ?
    – Saroupille
    Oct 11, 2014 at 11:11
  • @Saroupilleif you don't use it then it doesn't work:-) there is probably an answer on site explaining \expandafter I'll post a link Oct 11, 2014 at 11:14
  • 1
    @egreg yes, I know, but I thought that would look even more weird (and is specific to those environments:-) Oct 11, 2014 at 22:34

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .