算法标题出现幻影故障

算法标题出现幻影故障

我正在尝试\phantom在算法标题中使用。我正在使用algorithmalgorithmic包。\phantom在我的文档中的普通文本中可以正常工作,但在标题中则不行。有没有解决方法可以将空白放入标题中?我尝试过\hbox和使用来\includegraphics[width=0.25in]{smallWhiteImage.png}创建一些空间。这些都不起作用。

任何帮助都非常好!请参阅下面的代码示例。

我拥有的:

\begin{algorithm}
\caption{ TestAlgorithm \newline
\textbf{SomeInputs} input1, \newline $\cdots$ input2, input3, input4, \newline $\cdots$ input5, input6, input7 \newline
\textbf{AnOutput} output1 }
\label{algo:TestAlgorithm}
\begin{algorithmic}[1]
\STATE $oh yeah!$
\end{algorithmic}
\end{algorithm}

我想要的是:

\begin{algorithm}
\caption{ TestAlgorithm \newline
\textbf{SomeInputs} input1, \newline \phantom{$\cdots$} input2, input3, input4, \newline \phantom{$\cdots$} input5, input6, input7 \newline
\textbf{AnOutput} output1 }
\label{algo:TestAlgorithm}
\begin{algorithmic}[1]
\STATE $oh yeah!$
\end{algorithmic}
\end{algorithm}

答案1

您可以根据需要\protect\phantom{$\cdots$}使用\phantom

在此处输入图片描述

根据 egreg 的评论,您还可以使用\hspace*{2em}来指定要添加的空间。您可以像 一样指定绝对水平空间\hspace*{1.0cm},但最好使用根据当前字体调整的测量值——1em大约是字母上的水平宽度m。您可以使用的其他有用的水平空间包括:

在此处输入图片描述

还有一个负薄空间,\!在某些情况下很有用。

笔记:

  • 如果您需要有关水平间距的更多信息,请参阅有哪些命令可以控制水平间距?

  • 如果您确实需要所使用的空间$cdots$,您可以使用来\settowidth测量该尺寸:

      \newlength{\WidthOfCdots}\settowidth{\WidthOfCdots}{$\cdots$}
    

    然后使用

       \hspace*{\WidthOfCdots}
    

    将产生所需的水平空间。

代码:

   \documentclass{article}
\usepackage{algorithm}
\usepackage{algorithmic}

\newlength{\WidthOfCdots}\settowidth{\WidthOfCdots}{$\cdots$}

\begin{document}
\section{What you have:}
\begin{algorithm}
\caption{ TestAlgorithm \newline
\textbf{SomeInputs} input1, \newline $\cdots$ input2, input3, input4, \newline $\cdots$ input5, input6, input7 \newline
\textbf{AnOutput} output1 }
\label{algo:TestAlgorithm A}
\begin{algorithmic}[1]
\STATE $oh yeah!$
\end{algorithmic}
\end{algorithm}


\section{What you want:}

\begin{algorithm}
\caption{ TestAlgorithm \newline
\textbf{SomeInputs} input1, \newline \protect\phantom{$\cdots$} input2, input3, input4, \newline \protect\phantom{$\cdots$} input5, input6, input7 \newline
\textbf{AnOutput} output1 }
\label{algo:TestAlgorithm}
\begin{algorithmic}[1]
\STATE $oh yeah!$
\end{algorithmic}
\end{algorithm}

\begin{algorithm}
\caption{ TestAlgorithm \newline
\textbf{SomeInputs} input1, \newline \protect\phantom{$\cdots$} input2, input3, input4, \newline \hspace*{\WidthOfCdots} input5, input6, input7 \newline
\textbf{AnOutput} output1 }
\label{algo:TestAlgorithm B}
\begin{algorithmic}[1]
\STATE $oh yeah!$
\end{algorithmic}
\end{algorithm}

Comparison of horizontal spaces:\bigskip

\begin{tabular}{ll}
\verb|\,| & "\," \\
\verb|\thinspace| & "\thinspace" \\
\verb|\enspace| & "\enspace" \\
\verb|\quad| & "\quad" \\
\verb|\qquad| & "\qquad" \\
\end{tabular}
\end{document}

答案2

像 LaTeX 这样的排版系统肯定有在输出中产生空白的方法。

(人类)打印机使用的传统长度称为“四边形”和“双四边形”;该名称源自意大利语“quadrato”,即“正方形”。它是一块金属,表面为扁平方形,可以插入要设置的字符中,其边长等于字体大小。TeX 中四边形空间的类似物称为 ,\quad双四边形称为\qquad

但是,\quad\qquad产生一个在换行符处消失的空格,但是有办法产生一个在换行符处消失的空格没有消失。一般间距命令(在水平方向上)是,\hspace并且\quad相当于\hspace{1em};的 * 变体\hspace是我们这里所需要的:

所以你的输入是

\caption{TestAlgorithm\newline
  \textbf{SomeInputs} input1,\newline
  \hspace*{1em}input2, input3, input4,\newline
  \hspace*{1em}input5, input6, input7\newline
  \textbf{AnOutput} output1}

或者,如果您更喜欢双四边形,则2em用 代替。1em

参数\hspace可以是任何合法的尺寸。单位取决于字体,如果没有其他原因(在某些情况下可能需要明确的长度,例如或) em,最好坚持使用它。3cm2in

相关内容