![如何在 algorithmicx-package 中的 parbox 中的正确位置断开句子?](https://linux22.com/image/456797/%E5%A6%82%E4%BD%95%E5%9C%A8%20algorithmicx-package%20%E4%B8%AD%E7%9A%84%20parbox%20%E4%B8%AD%E7%9A%84%E6%AD%A3%E7%A1%AE%E4%BD%8D%E7%BD%AE%E6%96%AD%E5%BC%80%E5%8F%A5%E5%AD%90%EF%BC%9F.png)
我有这个代码
\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
我会使用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
删除。
神奇的是,公式适合宽度,但主要的方面是数学符号与文本字体兼容。