特定符号处的自由裁量方程被打破

特定符号处的自由裁量方程被打破

我有很长的方程式,希望 LaTeX 自动将其拆分。经过一番搜索,我还是无法找到实现此效果的方法。我breqn的软件包列表中有这个功能,但它不会拆分我在环境或数学模式(或标题模式)中拥有的方程式equation。例如,它不会拆分:

A[A, k_a](M(\Box_0)) | I[k_a, d_k] | R(K[K, d_k, x]) \rightarrowtriangle A[A,k_a](M(\Box_0 | T[k_t])) | I[k_a,d_k] | I[k_t, d_k] | R(K[K,d_k,x])

我认为这意味着我想添加和\mathpunct符号,并且只允许深度一的中断。但是我实际上无法做到这一点。我不知道如何使用命令或找到或的符号编号。\rightarrowtriangle|\mathpunct\rightarrowtriangle|

编辑:

一个最小的工作示例:

\documentclass{report}
\usepackage{stmaryrd}
\usepackage{amssymb}
\usepackage{breqn}
\begin{document}
\begin{dmath}
  A[A, k_a](M(\Box_0)) | I[k_a, d_k] | R(K[K, d_k, x]) \rightarrowtriangle A[A,k_a](M(\Box_0 | T[k_t])) | I[k_a,d_k] | I[k_t, d_k] | R(K[K,d_k,x])
\end{dmath}
\end{document}

答案1

\rightarrowtriangle以能够理解的方式进行定义breqn;然后添加一层支撑并告知breqn仅在 0 级处断开。我用过\mid,也许你更喜欢\vert垂直线。

\documentclass{report}
\usepackage{amssymb,amsmath}
\usepackage{breqn}
\usepackage{stmaryrd}

\makeatletter
\ExplSyntaxOn
\cs_gset:cpx{mg@stmry}{\hexnumber@\symstmry}%
\DeclareFlexSymbol{\rightarrowtriangle}{Rel}{stmry}{5F}
\makeatother
\ExplSyntaxOff

\begin{document}
\begin{dmath}[breakdepth=0]
  \left.
  A[A, k_a](M(\Box_0)) \mid I[k_a, d_k] \mid R(K[K, d_k, x])
  \right.
  \rightarrowtriangle
  \left.
  A[A,k_a](M(\Box_0 \mid T[k_t])) \mid I[k_a,d_k] \mid I[k_t, d_k] \mid R(K[K,d_k,x])
  \right.
\end{dmath}
\end{document}

enter image description here

实际上应该有一个stmaryrd.sym文件可以将 的定义转换stmaryrd.sty为 的有用内容breqn。目前还没有。


这样的例子证实了我的观点:尝试自动完成方程式中的换行是一个坏主意。

breqn包不喜欢|;应该使用\vert\lvert或,具体取决于条形的数学含义。在这种情况下,应该使用\rvert;好吧,如果这样做并对 做出正确的定义,结果如下:\mid\mid\rightarrowtriangle

enter image description here

这显然是不可接受的。如果使用\vert,则不能中断。这将“自动”起作用:

\documentclass{report}
\usepackage{amssymb}
\usepackage{breqn}
\usepackage{stmaryrd}

\makeatletter
\ExplSyntaxOn
\cs_gset:cpx{mg@stmry}{\hexnumber@\symstmry}%
\DeclareFlexSymbol{\rightarrowtriangle}{Rel}{stmry}{5F}
\makeatother
\ExplSyntaxOff

% breqn doesn't like |
\newcommand{\OR}{\hiderel{\mid}}


\begin{document}
\begin{dmath}
  A[A, k_a](M(\Box_0)) \OR I[k_a, d_k] \OR R(K[K, d_k, x])
  \rightarrowtriangle
  A[A,k_a](M(\Box_0 \OR T[k_t])) \OR I[k_a,d_k] \OR I[k_t, d_k] \OR R(K[K,d_k,x])
\end{dmath}
\end{document}

并产生

enter image description here

我问自己,与写作相比,优势在哪里

\begin{equation}
\begin{aligned}
& A[A, k_a](M(\Box_0)) \mid I[k_a, d_k] \mid R(K[K, d_k, x]) \\
& \quad {} \rightarrowtriangle
  A[A,k_a](M(\Box_0 \mid T[k_t])) \mid I[k_a,d_k] \mid I[k_t, d_k] \mid R(K[K,d_k,x])
\end{aligned}
\end{equation}

产生本质上相同的结果。

相关内容