breqn 不会自动换行

breqn 不会自动换行

我正在写一个两列日志,其中列出了一个向量的组成部分。这个向量太长,无法放在一列中,我在向量的括号周围使用了\leftand 。但是环境不会自动将向量分成两行。代码如下\rightdmath

 \begin{dmath}
 \left(\frac{-(n-1)}{2}h_{12}l,\ldots,\frac{-3}{2}h_{12}l,\frac{-1}{2}h_{12}l, \frac{1}{2}h_{12}l,\frac{3}{2}h_{12}l,
  \ldots,\frac{n-1}{2}h_{12}l\right). \label{eq:x2}
 \end{dmath}

输出如下

上述代码的输出

有人知道如何纠正这个问题吗?

编辑:我的文档的序言如下

\documentclass[journal]{IEEEtran}

\usepackage{cite}
\ifCLASSINFOpdf
\usepackage[pdftex]{graphicx}
% declare the path(s) where your graphic files are
\graphicspath{{../figs/}}
\else
\usepackage[dvips]{graphicx}
% declare the path(s) where your graphic files are
\graphicspath{{../figs/}}
\fi
% *** MATH PACKAGES ***
\usepackage[cmex10]{amsmath}
\interdisplaylinepenalty=2500
\usepackage[caption=false,font=footnotesize]{subfig}
\usepackage{url}
\usepackage{breqn}
\hyphenation{op-tical net-works semi-conduc-tor}
\begin{document}
\section{Some Random Section}
\begin{dmath}
 \left(\frac{-(n-1)}{2}h_{12}l,\ldots,\frac{-3}{2}h_{12}l,\frac{-1}{2}h_{12}l, \frac{1}{2}h_{12}l,\frac{3}{2}h_{12}l,
  \ldots,\frac{n-1}{2}h_{12}l\right). \label{eq:x2}
 \end{dmath}
\end{document}

希望这有帮助!

答案1

breqn逗号和普通原子后不会中断,因此您的公式没有可行的断点。您必须帮助breqn告诉它,在这种情况下,允许在逗号处中断。

\documentclass{article}
\textwidth=.7\textwidth % just to show the result

\newcommand{\breakingcomma}{%
  \begingroup\lccode`~=`,
  \lowercase{\endgroup\expandafter\def\expandafter~\expandafter{~\penalty0 }}}

\usepackage{breqn}
\begin{document}

\begin{dmath}\breakingcomma
\left(\frac{-(n-1)}{2}h_{12}l,\ldots,\frac{-3}{2}h_{12}l,
  \frac{-1}{2}h_{12}l, \frac{1}{2}h_{12}l,\frac{3}{2}h_{12}l,
  \ldots,\frac{n-1}{2}h_{12}l\right). \label{eq:x2}
 \end{dmath}

\end{document}

我不会让这个改变永久生效:这会在不合适的地方破坏其他公式。

在此处输入图片描述

答案2

如果你使用+而不是,它就会起作用,因此这只会使逗号像加号一样工作。笔记这也使得,具有像这样的二元运算符的间距+

我怀疑它不太像是官方breqn界面,但是......

在此处输入图片描述

\documentclass{article}

\usepackage{breqn}

\textwidth.5\textwidth

\begin{document}



{\catcode`+\active
\def\foo#1#2#3#4#5{%
\def\tmp{#1,#3#4{2C}}}
\expandafter\foo+
\catcode`,\active
\global\let,\tmp
}


\noindent X\dotfill X

\begin{dmath}
 \left(\frac{-(n-1)}{2}h_{12}l,\ldots,\frac{-3}{2}h_{12}l,\frac{-1}{2}h_{12}l, \frac{1}{2}h_{12}l,\frac{3}{2}h_{12}l,
  \ldots,\frac{n-1}{2}h_{12}l\right) \label{eq:x2}
\end{dmath}

\noindent X\dotfill X




\end{document}

正如聊天中的 @egreg 指出的那样,不需要花哨的重新定义,而更好的解决方案是不需要全局将逗号重新定义为二元运算符,而只是明确地允许在某些(或所有)逗号后中断:

\begin{dmath}
 \left(\frac{-(n-1)}{2}h_{12}l,\penalty0 \ldots,\penalty0 \frac{-3}{2}h_{12}l,\penalty0 \frac{-1}{2}h_{12}l,\penalty0  \frac{1}{2}h_{12}l,\penalty0 \frac{3}{2}h_{12}l,\penalty0 
  \ldots,\penalty0 \frac{n-1}{2}h_{12}l\right) \label{eq:x2}
\end{dmath}

相关内容