免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 发帖

n层迭代的下括号设计

像 $\underbrace{f(f(\cdots f(x)\cdots))}_{n\text{个}f}$(代码是 \underbrace{f(f(\cdots f(x)\cdots))}_{n\text{个}f})这样的式子,刚才羊羊羊羊说想让下括号只括到最后一个 f 的位置,这不难,只要更改一下的位置,改成 \underbrace{f(f(\cdots f}_{n\text{个}f}(x)\cdots)) 就行,效果:
\[\underbrace{f(f(\cdots f}_{n\text{个}f}(x)\cdots))\]

但是问题来了,如果最里面的式子是高个子,括号自然也要变高,然而,如果你想用 \left( \right) 来让括号自动变大的话,则会出问题。
比如代码 \underbrace{f\left(f\left(\cdots f}_{n\text{个}f}\left(\frac12x\right)\cdots\right)\right) 结果:
\[\underbrace{f\left(f\left(\cdots f}_{n\text{个}f}\left(\frac12x\right)\cdots\right)\right)\]
报错了,这是因为 \left \right 要成对出现构成一个组,不能被切开,那怎么办?

笨方法可以使用 \Big 或 \bigg 之类的有固定大小的括号代替,比如 \underbrace{f\biggl(f\biggl(\cdots f}_{n\text{个}f}\biggl(\frac12x\biggr)\cdots\biggr)\biggr) 结果:
\[ \underbrace{f\biggl(f\biggl(\cdots f}_{n\text{个}f}\biggl(\frac12x\biggr)\cdots\biggr)\biggr) \]
但这种方式你得知道 \Big、\bigg 等等它们分别有多大,才能适应不同的式子,而且一但最里面的式子发生变化,可能又要改,不是很方便。

要想省事点还是得用回 \left \right,但是得变一下,写起来代码会比较长,不过没关系,别忘了 latex 的自定义命令功能,所以我们只要慢慢设计好了,以后就一个命令搞定,这就是 latex 方便的地方。

\newcommand\died[3]{{\underbrace{
{#1\left(#1\left(\cdots\vphantom{#2}\right.\right.}#1}_{#3}}
{\left.\left.\left(#2\right)\cdots\right)\right)}}

具体细节我就懒得解释了,用法是 \died{函数名}{最里面的式子}{下括号下的说明}

\(\newcommand\died[3]{{\underbrace{
{#1\left(#1\left(\cdots\vphantom{#2}\right.\right.}#1}_{#3}}
{\left.\left.\left(#2\right)\cdots\right)\right)}}\)
例:
\died fx{n\text{个}f}
\died g{\frac12x}{m\text{层}}
\died h{\sum_{i=1}^nx_i}{p\text{次}}
\died F{\frac{\dfrac12}{\dfrac12}}{q\text{遍}}
分别显示
\begin{gather*}
\died fx{n\text{个}f}\\
\died g{\frac12x}{m\text{层}}\\
\died h{\sum_{i=1}^nx_i}{p\text{次}}\\
\died F{\frac{\dfrac12}{\dfrac12}}{q\text{遍}}
\end{gather*}
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
$\href{https://kuingggg.github.io/}{\text{About Me}}$

好吧,虽然很无耻,但是也是唯一的解决办法。这边的“\left(”级别权限太高了。

TOP

这边的“\left(”级别权限太高了。

应该说这是跟内部实现的方法有关,虽然具体细节我也不清楚,但大概原理应该就是当遇到 \left 之后就读取它与相应的 \right 之间的内容,排好这部分内容后得出其高度和深度,从而给出相应大小的括号括起来,所以它必定成对出现,不能被切开。

TOP

回复 3# kuing


绝对值呢?

TOP

回复 4# 羊羊羊羊

只要用了 \left  \right 就一样

至于本论坛自定义的 \abs 命令就是用 \left| \right| 来实现自动伸缩的,已经成对存在。

TOP

哦,上括号和下括号,可以有交集内容吗?

TOP

哦,上括号和下括号,可以有交集内容吗?
羊羊羊羊 发表于 2014-10-24 00:03

直接不行,要实现的话又要动用一些高级技巧了

TOP

本帖最后由 羊羊羊羊 于 2014-10-24 00:41 编辑

回复 7# 爪机专用

我猜到了。因为会冲突。除非你把“\”舍弃,换个其他引用命令的东西。这好坑啊,会搞其他冲突出来的。如果成对代码可以有不同颜色,就好得多,方便检查,就像MMC一样。至少有一个蓝色成对的验错标准。

TOP

哦,上括号和下括号,可以有交集内容吗?
羊羊羊羊 发表于 2014-10-24 00:03

在真 latex 中粗略地设计了一下,一般的情况不难实现,只是在这里 mathjax 无法演示。
源文件: xsjjkhtest.tex (395 Bytes)
编译结果:
QQ截图20141024020030.gif
2014-10-24 02:00
$\href{https://kuingggg.github.io/}{\text{About Me}}$

TOP

回复 9# kuing

这里 http://latex-community.org/compo ... /503-latex-tricks-x 也有讲这种上下括号的

TOP

返回列表 回复 发帖