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>
第一个定义缺少了一个内容。