automatikus { [ ( ) ] } zárójelek, (La)TeX makró

Fórumok

Sziasztok,

a következő a problémám:
szeretnék automatikus zárójelezést LaTeX-ben, ehhez pl. csinálni egy \mybr{ } parancsot, amely egy többszörösen egymásba ágyazott zárójeleket tartalmazó mat. képletben azokat automatikusan a megfelelőekre cseréli. Tehát betartja a szokásos <{[( )]}> sorrendet.
Példa:


$a \mybr{1 + \exp \mybr{b \mybr{x - y}}}$

a következő eredményt adná:


$a \left\{ 1 + \exp \left[ b \left( x - y \right) \right] \right\}$.

Ha viszont a belső zárójelet kiveszem, automatikusan a \mybr{ } parancsok a következő zárójelezést generálnák:


$a \left[ 1 + \exp \left( bx - y \right) \right]$

Nem találtam erre csomagot és a LaTeX makró programozásához sajna nem értek, ezért kérem a segítségeteket.
Kösz!

Hozzászólások

Ha jól értem, akkor neked olyan kellene, amely megnézi előre a mélységet. Ilyet nem tudok, de olyat igen, ami az adott mélységhez képest ír ki zárójelet:


\newcount \brdeep
\newcommand\mybr[1]{\ifcase \brdeep \left\{ \or \left[ \or \left< \fi \advance\brdeep by 1 #1 \advance\brdeep by -1 \ifcase \brdeep \right\} \or \right] \or \right> \fi}

UI: a * helyett használj \cdot -ot :)

Nem vállalok érte felelősséget, nagyon kezdetleges megoldások vannak benne, de működik.


\newif\ifsimulatebr \simulatebrfalse
\newif\ifreadybr \readybrfalse
\newcount \brdeep
\newcount \brmaxdeep
\newcommand\mybr[1]{
\ifsimulatebr
\advance\brdeep by 1
\ifnum \brmaxdeep<\brdeep
\global\brmaxdeep=\brdeep
\fi
#1
\advance\brdeep by -1
\else
\ifreadybr
\advance \brmaxdeep by -1
\ifcase \brmaxdeep \left( \or \left[ \or \left\{ \or \left< \fi #1 \ifcase \brmaxdeep \right) \or \right] \or \right\} \or \right> \fi
\advance \brmaxdeep by 1
\else
\simulatebrtrue
\brdeep=0
\brmaxdeep=0
\vphantom{#1}\!
\simulatebrfalse
\readybrtrue
\ifcase \brmaxdeep \left( \or \left[ \or \left\{ \or \left< \fi #1 \ifcase \brmaxdeep \right) \or \right] \or \right\} \or \right> \fi
\readybrfalse
\fi
\fi
}

Huhh... na en nem fogok megtanulni TeX-ben programozni, az biztos, meghagyom ezt az elvezetet neked. Mindenesetre bookmark, sosem lehet tudni, mikor lesz ilyenre szuksegem. Ja, es koszi.

Akkor a hasznalata ezek szerint \mybr{keplet} ?
--


()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.