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

行内公式的可换行 left right 尝试

代码及测试:
\documentclass{article}
\usepackage[papersize={12cm,9cm},margin=2cm]{geometry}

\makeatletter
\newdimen\Ht
\newcommand\khhlr[4]{% khhlr = 可换行 left right
\setbox0=\hbox{$\m@th#3#4$}\Ht=\ht0\advance\Ht by\dp0%
\mathopen{\hbox{$\left#1\rule[-\dp0]{0pt}{\Ht}\right.\n@space$}}%参考了 source2e
#4%
\mathclose{\hbox{$\left.\rule[-\dp0]{0pt}{\Ht}\right#2\n@space$}}%
}
\newcommand\khh[2]{\mathpalette{\khhlr#1#2}}
\makeatother

\newcommand\khhp{\khh()}
\newcommand\khhb{\khh[]}
\newcommand\khhB{\khh\{\}}
\newcommand\khhv{\khh||}

\begin{document}

$\khhp{x}+\khhb{x^2}+\khhB{\frac12}+\khhv{\sum}+\khh[){0,\sqrt{\sum}}$

\[\khhp{x}+\khhb{x^2}+\khhB{\frac12}+\khhv{\sum}+\khh[){0,\sqrt{\sum}}\]

text text text text text text $\displaystyle\khhB{\frac12+\frac12+\frac12+\frac12+\frac12+\frac12}$
text text text text text text $\displaystyle\khh(]{\frac12+\frac12+\frac12+\frac12+\frac12+\frac12}$

\end{document}
效果:
QQ截图20201017151049.png
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
$\href{https://kuingggg.github.io/}{\text{About Me}}$

原理其实很简单,就是先将内容存入 box0 里,然后获取它的高度深度,据此分别打出左括号、内容、右括号,它们不是一个整体,所以在行内的时候就能够自动换行(注意不是人工换行,\\ 是无效的)。
其实 big, Big 之类也是一样道理,只不过那些是固定的括号,而我所多做的就是获取内容的高度信息来确定括号。
既然如此,那为啥 latex 的设计者没弄这样的东东?难道有啥副作用,又或者这种做法有点浪费资源?我不清楚……

TOP

回复 1# kuing

谢谢,这个已经解决了我刚才发那帖的问题。

我刚才编译了一下,有些地方感觉还是没有正确换行,比如这个:
  1. \begin{theorem}[拉格朗日中值定理]
  2. 设函数$f(x)$是区间$[a,b]$上的连续函数,集合$S = \myset{x \in [a,b]: \text{在$x \in (a,b)$使得$f(x)$可导}}$.
  3. \end{theorem}
复制代码

定理.png
2020-10-17 16:56


这个如果改成:“$f(x)$是定义在区间$[a,b]$上的连续函数”,加了几个字,它还是从冒号那里折行,而如果少几个字,这一行的字间距感觉就有点拉开了。

TOP

回复 3# abababa
这是因为你的 \text{在 ... 可导} 把这句话变成一个整体了,它就无法在这里分开。
改成这样试试
\begin{theorem}[拉格朗日中值定理] 
设函数$f(x)$是区间$[a,b]$上的连续函数,集合$S = 
\myset{x \in [a,b]: \text{在}~x \in (a,b)~\text{使得}~f(x)~\text{可导}}$. 
\end{theorem}
$\href{https://kuingggg.github.io/}{\text{About Me}}$

TOP

回复 4# kuing

其实我也不知道公式里的 ~ 会是咋处理,如果不行的话,把 ~ 改成 \空格 再试

不过就算 ~ 或 \空格 都不能换行,至少在 \in 那里可以换

TOP

本帖最后由 abababa 于 2020-10-17 17:17 编辑

回复 4# kuing

原来如此,原来是text弄的没有换行。
觉得这种公式里又有汉字又有公式的挺麻烦,就用text括起来,然后里面再打上公式,一次就成了,不用那么多text,不知道正规的做法是不是这样。

TOP

返回列表 回复 发帖