使用“newtxttext”包时 algorithm2e 输出不正确

使用“newtxttext”包时 algorithm2e 输出不正确

newtxtext我有一个显示算法的 LaTeX 文档,当我使用带有 的包时,输出不正确algorithm2e。以下是显示此问题的最小工作示例。

\documentclass[12pt]{article}
\usepackage{newtxtext}        
\usepackage{newtxmath}      
\usepackage[boxed]{algorithm2e} 

\begin{document}
\begin{algorithm} \LinesNumbered \SetKwInOut{Input}{input}
\SetKwInOut{Output}{output}  \Input{the input}  \Output{the output} Do
something  \caption{The  algorithm} \end{algorithm} 
\end{document}

输出如下: 在此处输入图片描述

问题:在上图中,:符号出现在一条分隔线上。

我该如何解决这个问题?我当然可以删除该包\usepackage{newtxtext}。但是,它是 Springer 图书(SVMULT 类)的建议包。因此,我更愿意寻找其他解决方案。

答案1

感觉像 一个错误大部头书。这里有一个快速解决方法:

\documentclass[12pt]{article}
\usepackage{newtxtext}
\usepackage{newtxmath}
\usepackage[boxed]{algorithm2e}

\begin{document}
\begin{algorithm}
\LinesNumbered
\SetKwInOut{Input}{input}
\SetKwInOut{Output}{output}
\ResetInOut{output}% <- added here
\Input{the input}
\Output{the output}
Do something
\caption{The  algorithm}
\end{algorithm}
\end{document}

冒号位置固定


问题是由于冒号与左边距的距离固定引起的。\SetKwInOut应该根据最长关键字来设置这个距离,但是这个机制不知何故失败了(我猜newtxtext粗体字体真的很宽)。所以我习惯于\ResetInOut重新设置冒号的位置。这些可以在第 11.1 节中找到algorithm2e文档

我推测距离测量是用常规字体完成的。我可以非常有信心的说这确实是一个bug。

创建这些时使用的长度<keyword> : <contents>是 \inoutsize,即的宽度 ,并且如果变宽\algocf@inoutbox则更新。但是我发现\algocf@inoutbox两种不同的定义用于设置这个盒子,而且它们也不同于 \algocf@inputbox!!!

% In `\SetKwInOut'
\sbox\algocf@inoutbox{\KwSty{#2\algocf@typo:}}%

% In `\ResetInOut'
\sbox\algocf@inoutbox{\hbox{\KwSty{#1\algocf@typo:}\ }}%

% In `\SetKwInput', different box
\sbox\algocf@inputbox{\hbox{\KwSty{#2\algocf@typo:} }}%

显然,<space>第一个定义缺少了一个内容。

相关内容