使用 时algorithm2e
,如果您使用\SetKwInOut
,它会将参数放在冒号后面。
这是一个 MWE:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ruled,lined]{algorithm2e}
\begin{document}
\begin{algorithm}[ht]
\SetKwInOut{Data}{Data}
\SetKwInOut{Result}{Result}
\Data{my data}
\Result{my result}
\caption{My algorithm}
\end{algorithm}
\end{document}
我想在前面添加一个空格我的数据和我的结果。
我该怎么办?
编辑
看来问题不是由 引起的algorithm2e
,我已更新了 ,而是由 引起的microtype
,我最初并没有怀疑过,因此没有将其添加到我的 MWE 中。
如果您使用microtype
,解决方案是禁用算法的突出:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ruled,lined]{algorithm2e}
\usepackage[final]{microtype}
\begin{document}
{\microtypesetup{protusion=false}
\begin{algorithm}[ht]
\SetKwInOut{Data}{Data}
\SetKwInOut{Result}{Result}
\Data{my data}
\Result{my result}
\caption{My algorithm}
\end{algorithm}
\microtypesetup{protusion=true}}
\end{document}
我将对这两个回复表示赞同,并将 Werner 的回复标记为答案,因为它展示了如何自定义\SetKwInOut
。
答案1
\Data{~my data}
最简单的方法是使用and自己添加空格\Result{~my result}
(此处~
插入一个不间断的单词间空格)。
\documentclass{article}
\usepackage[ruled,lined]{algorithm2e}
\begin{document}
\begin{algorithm}[ht]
\SetKwInOut{Data}{Data}
\SetKwInOut{Result}{Result}
\Data{~my data}
\Result{~my result}
\caption{My algorithm}
\end{algorithm}
\end{document}
请注意,插入是除了定义的每个宏的定义中~
现有的之外的(见下文)。~
\SetKwInOut
\SetKwInOut
如果您希望在序言中做出这些调整,这里是原始定义:
\newcommand{\SetKwInOut}[2]{%
\sbox\algocf@inoutbox{\KwSty{#2\algocf@typo:}}%
\expandafter\ifx\csname InOutSizeDefined\endcsname\relax% if first time used
\newcommand\InOutSizeDefined{}\setlength{\inoutsize}{\wd\algocf@inoutbox}%
\sbox\algocf@inoutbox{\parbox[t]{\inoutsize}{\KwSty{#2\algocf@typo\hfill:}}~}\setlength{\inoutindent}{\wd\algocf@inoutbox}%
\else% else keep the larger dimension
\ifdim\wd\algocf@inoutbox>\inoutsize%
\setlength{\inoutsize}{\wd\algocf@inoutbox}%
\sbox\algocf@inoutbox{\parbox[t]{\inoutsize}{\KwSty{#2\algocf@typo\hfill:}}~}\setlength{\inoutindent}{\wd\algocf@inoutbox}%
\fi%
\fi% the dimension of the box is now defined.
\algocf@newcommand{#1}[1]{%
\ifthenelse{\boolean{algocf@hanginginout}}{\relax}{\algocf@seteveryparhanging{\relax}}%
\ifthenelse{\boolean{algocf@inoutnumbered}}{\relax}{\algocf@seteveryparnl{\relax}}%
{\let\\\algocf@newinout\hangindent=\inoutindent\hangafter=1\parbox[t]{\inoutsize}{\KwSty{#2\algocf@typo\hfill:}}~##1\par}% <--------
\algocf@linesnumbered% reset the numbering of the lines
\ifthenelse{\boolean{algocf@hanginginout}}{\relax}{\algocf@reseteveryparhanging}%
}}%
箭头突出显示的行指向创建函数的位置。它~
已插入到参数之前。但是,您可以复制并粘贴上述定义,将其更改\newcommand
为\renewcommand
,将其包装在\makeatletter
...\makeatother
对中,然后更改间距以满足您的需要。
答案2
升级您的 版本algorithm2e.sty
。CTAN 上的当前版本,2015 年 10 月 19 日发布的 5.1 版产生以下输出,其中包含一个额外的空格。