请考虑以下 PowerPoint 幻灯片:
这是在鬣蜥特克斯插件,它允许您从乳胶片段生成图片,并将它们添加到您的 PowerPoint 幻灯片中。
上面实际上是由三幅图像组成:带有 INPUT 标题的图像:
\documentclass{article}
\usepackage{amsmath}
\usepackage[parfill]{parskip}
\pagestyle{empty}
\usepackage{xcolor}
\usepackage{color}
\definecolor{mywhite}{rgb}{1,1,1}
\color{mywhite}
\begin{document}
\textsc{Input:} \hspace{15pt} $n$ terminal nodes: $V_1,V_2,...,V_n$\\
\hspace{50pt} and their corresponding weights: $w_1,w_2,...,w_n$
\end{document}
带有OUTPUT标题的那个:
\documentclass{article}
\usepackage{amsmath}
\usepackage[parfill]{parskip}
\pagestyle{empty}
\usepackage{xcolor}
\usepackage{color}
\definecolor{mywhite}{rgb}{1,1,1}
\color{mywhite}
\begin{document}
\textsc{Output:} \hspace{3pt} Optimal extended binary tree\\
\hspace{51pt} i.e. $T$ such that $\sum_{i=1}^nw_il_i$ is minimal
\end{document}
掌握算法的人:
\documentclass{article}
\usepackage{amsmath}
\usepackage[parfill]{parskip}
\pagestyle{empty}
\usepackage{xcolor}
\usepackage{color}
\definecolor{mywhite}{rgb}{1,1,1}
\color{mywhite}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{pifont}
\usepackage{geometry}
\geometry{textwidth=8.5cm}
\begin{document}
\begin{algorithm}
\caption{Huffman's Algorithm}
\label{CHalgorithm}
\begin{algorithmic}[1]
\State Initialize minimum heap $Q$ with $w_1,w_2,...,w_n$
\While {$Q.\text{size()}> 1$}
\State $w_i\leftarrow Q.\text{extractMin()}$
\State $w_j\leftarrow Q.\text{extractMin()}$
\State $w_k\leftarrow w_i+w_j$
\State Instantiate internal node $v_k$, with weight $w_k$
\State Set $v_k$ as the father of $v_i$ and $v_j$
\State $Q.\text{add}(w_k)$
\EndWhile
\end{algorithmic}
\end{algorithm}
\end{document}
能够用代码片段制作图像真是太好了,因为这提供了自由移动文本块(图像)的灵活性;否则,通过对代码进行适当的调整和改进,创建一个代码片段就可以实现这一功能 - 而这些技能我并不具备。
但在这种情况下,上图中的格式对我来说看起来很糟糕,并且 INPUT 和 OUTPUT 代码片段写得非常糟糕(\hspace{}
实现正确缩进的“解决方案”感觉不对,而且看起来很丑陋)。
这就是我需要帮助的地方。好吧,实际上不仅限于此。我需要以下主题方面的建议:
- 首先,也许是最简单的:参考算法的
\caption{}
标签。此标签将不需要的“算法 1”文本添加到我的标题中。标签\caption{}
可以自定义吗?我如何删除此添加的文本并只留下“霍夫曼算法”? - 有没有更好的方法来控制 INPUT 和 OUTPUT 片段的缩进?
- 事实上,我甚至更喜欢这种格式:
(以下图片由 MS Paint 创作,我拍了上面的照片,并用切割工具移动东西)
我希望它将全部内容放在一个代码片段中,而不是将多幅图像拼凑在一起。
任何帮助将不胜感激。
答案1
我认为将“输入”、“输出”和“算法”组全部包含在一个 (LaTeX) 文档中不需要做太多额外工作。请注意使用两列tabularx
环境来容纳“输入”和“输出”组。如果您不想为“算法”环境添加标题,请不要提供声明\caption
。
\documentclass{article}
\usepackage[textwidth=8.5cm]{geometry}
\usepackage{tabularx,ragged2e,amsmath,booktabs}
\newcolumntype{Y}{>{\RaggedRight\arraybackslash}X}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{parskip}
\begin{document}
\hrule%
Huffmann's Algorithm \strut
\hrule
\smallskip
\begin{tabularx}{\textwidth}{@{} lY @{}}
\textsc{Input:} &$n$ terminal nodes: $V_1,V_2,\dots,V_n$ and their corresponding weights: $w_1,w_2,\dots, w_n$ \\[0.75\baselineskip]
\textsc{Output:} & Optimal extended binary tree, i.e., $T$ such that $\sum_{i=1}^n w_il_i$ is minimal
\end{tabularx}
\begin{algorithm}
%\caption{Huffman's Algorithm}
%\label{CHalgorithm}
\begin{algorithmic}[1]
\State Initialize minimum heap $Q$ with $w_1,w_2,\dots,w_n$
\While {$Q.\text{size()}> 1$}
\State $w_i\leftarrow Q.\text{extractMin()}$
\State $w_j\leftarrow Q.\text{extractMin()}$
\State $w_k\leftarrow w_i+w_j$
\State Instantiate internal node $v_k$, with weight $w_k$
\State Set $v_k$ as the father of $v_i$ and $v_j$
\State $Q.\text{add}(w_k)$
\EndWhile
\end{algorithmic}
\end{algorithm}
\end{document}
答案2
Atabular
可能是最简单的解决方案,因为它只需要达到所需的宽度。我将列之间的默认间距设置为零,因此您必须在@{...}
需要的地方添加间距。
\documentclass[border=1pt]{standalone}
\usepackage{amsmath}
\begin{document}
\tabcolsep=0pt
\begin{tabular}{l@{ }l}
\textsc{Input:} & $n$ terminal nodes: $V_1,V_2,...,V_n$ \\
& and their corresponding weights: $w_1,w_2,...,w_n$ \\[20pt]
\textsc{Output:} & Optimal extended binary tree \\
& i.e. $T$ such that $\sum_{i=1}^nw_il_i$ is minimal
\end{tabular}
\end{document}