2010-06-26 161 views
0

如何編寫用{用{和all]替換所有[用{和所有]}的(La)TeX命令,假定每個[有一個匹配的],並且[和]是平衡的?它需要能夠處理嵌套的括號。在LaTeX中用平衡大括號替換平衡括號

例如,我希望能夠編寫一個命令\mynewcommand,以便\mynewcommand{{[[{1}{2}][{3}{4}]]}}\mycommand{{{{{1}{2}}{{3}{4}}}}}相同。

+0

是否希望用括號替換括號作爲*分組*字符或將被排版的字符? – 2010-06-27 07:10:35

+0

我希望它用花括號代替,這些花括號對於分組和參數傳遞是有效的(即它不足以使它們像\ bgroup和\ egroup一樣)。 – 2010-06-28 15:51:34

回答

2

也許最簡單的方法是使用E-TeX和\ scantokens

\newcommand*\mycommand[1]{% 
    \begingroup 
    \everyeof{\noexpand}% 
    \endlinechar=-1\relax 
    \catcode`\[=1\relax 
    \catcode`\]=2\relax 
    \edef\temp{\scantokens{#1}}% 
    \expandafter\endgroup 
    \expandafter\def\expandafter\temp\expandafter{\temp}% 
} 

這將在#1,但每定義與材料\ TEMP 「[」 ... 「]」 對變成一個TeX大括號組(「{」...「}」)。然後,您可以使用\ temp來做任何你想做的事情。正如我所說,這需要e-TeX,它可以在所有現代TeX系統中使用。