Я использую algorithm2e для набора псевдокода. Обычно я нахожу его простым в использовании, однако, я не могу найти настройку, которая подчеркивает условия в моих циклах 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
и , \ULforem
предоставляемые пакетом ulem
.
Условия algorithm2e
пакета:подчеркнул, и ulem
пакетпо умолчаниюзаменяет курсив подчеркиванием длявсевыделенный текст, поэтому подчеркивания появляются автоматически при совместном использовании algorithm2e
и ulem
упаковки.
Но к счастью, 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
и этот аналогичный пример:Возвращение \emph к нормальному состоянию после загрузки ulem
решение2
Оказалось, что удаление ulem
пакета, который я когда-то использовал для зачеркивания, сработало. Теперь он набирается в ожидаемом формате.