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!
- 25167 megtekintés
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 :)
- A hozzászóláshoz be kell jelentkezni
sry, már át is javítottam. jah, cdot... túl sokat programozok mellette c++-ban :)
- A hozzászóláshoz be kell jelentkezni
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
}
- A hozzászóláshoz be kell jelentkezni
Kipróbáltam, működik. hálás köszönet
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Igen, ez volt a kérés, hogy így működjön.
Én sem úgy indultam neki, hogy szeretnék tex-ben programozni. Egyszer tartottam egy előadást fraktálokról, és egyszerűbb (és főleg szebb!) volt tikz-ben tex-hel számolni a koordinátákat, mint más programmal rajzolni.
- A hozzászóláshoz be kell jelentkezni