双栏纸张上的公式宽度

双栏纸张上的公式宽度

我有一个公式,其内容如下......

\documentclass[journal]{IEEEtran}
\usepackage[backend=biber]{biblatex}
\addbibresource{bibliography.bib} %Import the bibliography file
\usepackage{lipsum}
\usepackage{algpseudocode}
\usepackage{algorithm}
\usepackage{graphicx}
\usepackage{adjustbox}
\hyphenation{op-tical net-works semi-conduc-tor}
\usepackage{amsmath,amssymb}

\DeclareRobustCommand{\bbone}{\text{\usefont{U}{bbold}{m}{n}1}}

\DeclareMathOperator{\EX}{\mathbb{E}}

\DeclareMathOperator{\E}{\mathbb{E}}
\begin{document}
\maketitle
\lipsum

\begin{equation}
\begin{aligned}[c]
reward(node, action)  = \begin{cases}
    constant\_action\_reward -\par action\_cost +
    success\_prob(action, sequence) * node\_reward,& \text{if } "XXX"=action
    constant\_action\_taking\_reward - action\_cost, & \text{otherwise}
\end{cases}
\end{aligned}
\end{equation}

\lipsum

\end{document}

我尝试过在双栏中使用 * 像 {equation*} 和不使用。论文是双栏的。在每个选项中,这覆盖两栏,其他文本覆盖在它上面。我附上了一张示例图片。如果它适合单栏,或者至少覆盖双栏,并且没有文本覆盖它,我会很高兴。

在此处输入图片描述

答案1

首先,您应该对数学使用与 Times 兼容的字体,并将长名称包装在\mathit其中或类似内容中。

其次,你需要分割较长的顶线。cases恐怕使用是不可能的。

一点视觉格式化会有所帮助。

\documentclass[journal]{IEEEtran}
\usepackage{amsmath,mathtools,amssymb}
\usepackage{newtx} % for math symbol compatible with Times

\usepackage{lipsum}

\newcommand{\tv}[1]{\mathit{#1}} % text variable

\begin{document}

\lipsum[1][1-4]
\begin{equation}
\hspace{-0.5em}
\begin{aligned}
&\tv{reward}(\tv{node}, \tv{action}) \\
& =
\left\{
  \begin{aligned}
    &\begin{aligned}
      \begin{aligned}
        &\tv{constant\_action\_reward} - \tv{action\_cost} \\
        &+ \tv{success\_prob}(\tv{action}, \tv{sequence}) \cdot \tv{node\_reward},
      \end{aligned}
      \\
      \text{if } \text{"XXX"}=\tv{action}\hspace{-0.3em}
    \end{aligned}
  \\[2ex]
    &\begin{aligned}
      \tv{constant\_action\_taking\_reward} - \tv{action\_cost},
      \\
      \text{otherwise}\hspace{-1em}
    \end{aligned}
  \end{aligned}\right.
\end{aligned}
\hspace{1000pt minus 1fil}
\end{equation}
\lipsum

\end{document}

在此处输入图片描述

答案2

作为Zarko 评论即使使用双列,你的方程也不适合。

我认为第一个选择是最好的,那就是使用较短的变量名。

如果你必须准确使用公式,Zarko 建议您打破了 的第一行cases。我认为这样看起来比在 之前打破更好cases。(并且您应该使用完整文本宽度显示它:在一列中使用变量名称,因为它们是原样,无法在少于 5 行的行中显示您的方程式,这使得它不太清晰。)

\documentclass[journal]{IEEEtran}
\usepackage[backend=biber]{biblatex}
\addbibresource{bibliography.bib} %Import the bibliography file
\usepackage{lipsum}
\usepackage{graphicx}
\usepackage{adjustbox}
\hyphenation{op-tical net-works semi-conduc-tor}
\usepackage{amsmath,amssymb}


\begin{document}
\lipsum


\begin{equation}
    E = mc^2
\end{equation}

\begin{figure*}[!t]
\normalsize
\begin{multline}
    \mathsf{reward(node, action)}  = \\
    \begin{cases}
        \mathsf{constant\_action\_reward} - \mathsf{action\_cost} +
        \mathsf{success\_prob(action, sequence)} * \mathsf{node\_reward},& \text{if ``XXX''=action}  \\
        \mathsf{constant\_action\_taking\_reward} - \mathsf{action\_cost}, & \text{otherwise}
\end{cases}
\end{multline}
\hrulefill
% The spacer can be tweaked to stop underfull vboxes.
\vspace*{4pt}
\end{figure*}

\begin{equation}
    E = mc^e
\end{equation}

\lipsum
\end{document}

一些说明:

  1. 我把你的变量名包裹起来,\mathsf因为它们看起来像计算机变量名。如果它们是单词,我会使用\mathrm\mathit像 David Carlisle 建议的那样。
  2. 我修复了显示的方程式中的一些其他小错误。
  3. 我不知道的语义是什么"XXX"=action,所以我把它们保留为文本。但你应该调整以适应含义。
  4. 如果您编译此文档,您将看到公式的编号顺序是错误的。这是“设计使然”:IEEEtran 文档表明双列公式优先浮动到下一页的顶部。文档中包含的代码提供了一种恢复正确编号的方法;但这需要手动干预,并且应在完成整个文档后进行设置。所以我在上面的代码中省略了这一点。

相关内容