如何在 algorithmicx-package 中的 parbox 中的正确位置断开句子?

如何在 algorithmicx-package 中的 parbox 中的正确位置断开句子?

我有这个代码

\documentclass[conference]{IEEEtran}
\IEEEoverridecommandlockouts
\usepackage{amsmath,amssymb,amsfonts}
\usepackage[noend]{algpseudocode}
\usepackage{algorithm}
\usepackage{algorithmicx}
\begin{document}
\begin{algorithm}[t]
{\bf Algorithm:} 
\begin{algorithmic}
\For{$k$ = 1 to $K$}
\For{$n$ = 1 to $N$}
\For{$j$ = 1 to $J$}
\State State.
\State \parbox[t]{20em}{Calculate $\{ {{\boldsymbol{y}} _m} \in {\mathbb{R}^{{J_1} \times {J_2} \times \cdots \times {J_N}}}, \hspace{2em} m = 1,2, \ldots ,M\} $ and ${\psi _{n,j}}$.}
\EndFor
\EndFor
\EndFor
\end{algorithmic}
\end{algorithm}
\end{document}

在此处输入图片描述 我希望句子在数字 1 或 2 处中断,而不是在等号处,以便红线上方的句子可以填充这一行。

在此处输入图片描述

答案1

我会使用varwidth而不是\parbox,因此框将使用实际大小。作为参数给出的宽度是最大宽度。

在逗号后添加\linebreak[0]即可;请确保仅当文档为最终形式时才执行此操作,不再对文本进行更改。

\documentclass[conference]{IEEEtran}
\IEEEoverridecommandlockouts
\usepackage{amsmath,amssymb,amsfonts}
\usepackage[noend]{algpseudocode}
\usepackage{algorithm}
\usepackage{algorithmicx}
\usepackage{varwidth}

\begin{document}

\begin{algorithm}[t]
\textbf{Algorithm:}
\begin{algorithmic}
  \For{$k = 1$ to $K$}
    \For{$n = 1$ to $N$}
      \For{$j = 1$ to $J$}
        \State State.
        \State \begin{varwidth}[t]{20em}\raggedright
               Calculate $\{\boldsymbol{y}_m \in 
               \mathbb{R}^{J_1 \times J_2 \times \cdots \times J_N},
               m=1,2,\linebreak[0]\dots,M\}$ and $\psi_{n,j}$.
               \end{varwidth}
      \EndFor
    \EndFor
  \EndFor
\State Something follows
\end{algorithmic}
\end{algorithm}

\end{document}

$k=1$ to $K$我删除了所有没用的括号,使得其他部分的输入更加正确和类似。

在此处输入图片描述

为了不让我的眼睛流血太多,我展示了以下输出:

\usepackage{newtxtext,newtxmath}

被添加和amssymb,amsfonts删除。

在此处输入图片描述

神奇的是,公式适合宽度,但主要的方面是数学符号与文本字体兼容。

相关内容