0
如何編寫用{用{和all]替換所有[用{和所有]}的(La)TeX命令,假定每個[有一個匹配的],並且[和]是平衡的?它需要能夠處理嵌套的括號。在LaTeX中用平衡大括號替換平衡括號
例如,我希望能夠編寫一個命令\mynewcommand
,以便\mynewcommand{{[[{1}{2}][{3}{4}]]}}
與\mycommand{{{{{1}{2}}{{3}{4}}}}}
相同。
如何編寫用{用{和all]替換所有[用{和所有]}的(La)TeX命令,假定每個[有一個匹配的],並且[和]是平衡的?它需要能夠處理嵌套的括號。在LaTeX中用平衡大括號替換平衡括號
例如,我希望能夠編寫一個命令\mynewcommand
,以便\mynewcommand{{[[{1}{2}][{3}{4}]]}}
與\mycommand{{{{{1}{2}}{{3}{4}}}}}
相同。
也許最簡單的方法是使用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系統中使用。
是否希望用括號替換括號作爲*分組*字符或將被排版的字符? – 2010-06-27 07:10:35
我希望它用花括號代替,這些花括號對於分組和參數傳遞是有效的(即它不足以使它們像\ bgroup和\ egroup一樣)。 – 2010-06-28 15:51:34