演算法中的條件有底線

演算法中的條件有底線

我正在使用演算法2e 來排版偽代碼。一般來說,我發現它很容易使用,但是,我似乎找不到強調 while 和 for 迴圈以及 if 語句中條件的設定。

\begin{algorithm}[H]
\LinesNumbered
\SetAlgoNoLine
\DontPrintSemicolon
\KwData{New relation $m_i(r_{new})m_j$}
\KwResult{An updated network where consequences of the new relation is inferred.}
\BlankLine
Add $(i,j)$ to Q\;
\While{Q is not empty} {

  (i, j) $\leftarrow$ Q.dequeue\;

  \For{k $\leftarrow$ 0 $\KwTo$ n} {
    $m_k(r_{new})m_j$ $\leftarrow$ $m_k(r)m_j \cup (m_k(r)m_i \circ m_i(r_{new})m_j)$\;
    \If {$m_k(r_{new})m_j \subset m_k(r)m_j$} {
      Q.enqueue($(k,j)$)\;
    }
  }

  \For{k $\leftarrow$ 0 $\KwTo$ n} {
    $m_i(r_{new})m_k$ $\leftarrow$ $m_i(r)m_k \cup (m_i(r_{new})m_j \circ m_j(r)m_k)$\;
    \If {$m_i(r_{new})m_k \subset m_i(r)m_k$} {
      Q.enqueue($(i,k)$)\;
    }
  }
}
\caption{Allen's Path Consistency}
\end{algorithm}

產生這樣的結果:

在此輸入影像描述

基本上,我想禁用條件的下劃線。有什麼建議麼?

答案1

實際上,您不必刪除該ulem軟體包,因為它可能在其他地方有用。使用包提供的\normalem和命令。\ULforemulem

包裹的條件algorithm2e強調,以及ulem封裝預設情況下用底線替換斜體全部強調文本,這就是為什麼在使用algorithm2eulem打包在一起時會自動出現下劃線。

但幸運的是,ulem軟體包提供了一個\normalem命令/選項來停用此預設功能,並提供了一個\ULforem命令/選項來啟用它。所以這是我的解決方案:

\normalem %%%% disable auto underline

\begin{algorithm}[H]
    algorithms goes here ...
\end{algorithm}[H]

\ULforem %%%% enable auto underline

參考:

ulem手動的http://texdoc.net/texmf-dist/doc/generic/ulem/ulem.pdf

和這個類似的例子:加載 ulem 後讓 \emph 恢復正常

答案2

看來,去掉ulem我曾經用來三振的包裝就成功了。現在它以預期的格式進行排版。

相關內容