latex缩进与对齐_科学网—Latex算法排版,不同行缩进不同 - 张鹏的博文
想在latex中以这样的版式描述算法:
1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
xxxxxxxxxxxxxxxxxxxxxxx/
2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/
3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/
4 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/
5 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|
xxxxxxxxxxxxxxxxxx/
6 xxxxxxxxxxxxxxx/
7 xxxxxxxxxxxxx/
8 xxxxxxxxx/
说明:
1)“算法行”指带标号的行,“文本行”指行文产生的行,如上段算法描述中有8个算法行,11个文本行。
2)“|”表示右边界(自动换行),“/”表示硬回车(手动换行)。
(将上述算法版式复制到记事本中,可发现右边界实际上都是垂直对齐的。)
要求:
1)算法不浮动,能够跨页;
2)每个算法行的行号都在最左端,垂直对齐,连续编号;
3)每个算法行到达右边界(用“|”表示)后,自动换行;且该算法行的后续文本行均向右缩进若干(比如2个字符)距离,其版式类似于Word中的“悬挂缩进”;参见第1、第5算法行;
4)每产生一次嵌套,嵌套的算法行除标号外,均整体向右缩进若干(比如4个字符)距离;参见第4、第5、第6算法行。
说明:为什么没有使用algorithm2e和clrscode宏包。
1)algorithm2e产生的算法像图片和表格一样,是浮动的;
2)algorithm2e产生的算法不能跨页;
3)algorithm2e产生的算法,处理超长行时能自动换行,但不能实现悬挂缩进;
4)clrscode产生的算法风格很好很独特,但个人还是喜欢在for、while、if之后有end的算法书写方式;
5)clrscode产生的算法不能处理超长行;
6)clrscode产生的算法不能跨页。
在bbs.ctex.org上发帖询问,经过LeoLiu的帮助,终于实现所要求的算法版式。原帖见http://bbs.ctex.org/forum.php?mod=viewthread&tid=62650。下面贴出代码及排版效果图,与大家共享。
\documentclass{article}
% Thanks to LeoLiu at http://www.ctex.org.
\newcounter{algleo}
\newlength{\lefttab}
\newlength{\numberoffset}
\setlength{\numberoffset}{-1em}
\newenvironment{algleo}%
{\trivlist
\topsep=0pt\parsep=0pt\itemsep=0pt
\def\li{\item\refstepcounter{algleo}\makebox[0.8em][r]{\thealgleo\hspace{\numberoffset}}
\hangafter1\hangindent1.8em\noindent}%
\def\linonumber{\item\makebox[0.8em][r]{\hspace{\numberoffset}}
\hangafter1\hangindent1.8em\noindent}%
\def\linooffset{\item\hangafter1\hangindent1em\noindent}%
\addtolength{\lefttab}{1.25em}
\addtolength{\numberoffset}{1.25em}
\leftskip=\lefttab}%
{\endtrivlist}
\begin{document}
\section{The Algorithm}
\setcounter{algleo}{0}
\begin{algleo}
\linonumber Algorithm $\cal A$.
\li \label{step - alga init}This is a normal line.
\li This is a very long line. How to use \LaTeX~to deal with this line? This is a
very long line. How to use \LaTeX~to deal with this line?
\li {\bf while} I want to continue {\bf do}
\begin{algleo}
\li This is a nested normal line.
\li This is a very long line. How to use \LaTeX~to deal with this line?
This is a very long line. How to use \LaTeX~to deal with this line?
\li {\bf for} $i \leftarrow 1$ {\bf to} 100 {\bf do}
\begin{algleo}
\li This is a nested normal line.
\li This is a very long line. How to use \LaTeX~to deal with this line?
This is a very long line. How to use \LaTeX~to deal with this line?
\end{algleo}
\li {\bf end}
\end{algleo}
\li {\bf end}
\li {\bf return} nothing.
\end{algleo}
In step \ref{step - alga init}, the algorithm does some initializing work.
In step \ref{step - alga init}, the algorithm does some initializing work.
\end{document}
(请使用WORD的全角半角转换功能将上述代码转成半角。方法:WORD“开始”按钮栏中点击“大小写转换”,在下拉菜单中选择“全角”或“半角”。)
最后实现的排版效果如下所示:
转载本文请联系原作者获取授权,同时请注明本文来自张鹏科学网博客。
链接地址:http://blog.sciencenet.cn/blog-482332-417364.html
下一篇:用Latex写线性规划
latex缩进与对齐_科学网—Latex算法排版,不同行缩进不同 - 张鹏的博文相关推荐
- latex文献怎么弄_科学网—Latex 中如何制作参考文献 (以ApJ为例) - 刘禾阳的博文...
写学术论文时,最后一般要加上参考文献,如果手动输入,不仅繁琐,而且容易出错,那么用BibTex来管理参考文献就显得很有必要. BibTeX是LaTex中管理参考文献的工具,其文件后缀名为.bib.我们 ...
- latex中文小标题_科学网—一个较为完整的中文图书Latex模板 - 张金龙的博文
用Latex编写中文书是让人头疼的工作.如果不是需要输入很多公式,很多人是不愿意用latex排版中文书的. 在ctex宏包发布之前, latex系统对中文排版的支持一直不太理想.虽然中文能够正常显示, ...
- matlab nan 无色_科学网—Matlab 关于NaN值的填充 - 肖鑫的博文
以前认为很麻烦的事往往一行命令就能搞定,代码如下 figure('position',[100 100 600 500],'PaperPositionMode', 'auto') m_proj('Sa ...
- g2 折线图点与点之间直线_科学网—ggplot2实现散点折线图 - 肖斌的博文
准备的数据: 第一列是时间,第二列是样本,第三列是具体数值.横轴标为时间,纵坐标为具体数值,图中不同颜色展示不同样本. 具体的代码: library(ggplot2) png("./xyz. ...
- python字母频率_科学网-Python统计字母频数和频率-吕波的博文
方案一 统计字符串中的字母频数 import collections import re d = collections.defaultdict(int) S = "testTypecopy ...
- ieee期刊的科技写作思路曹文平_科学网—怎样向IEEE期刊投稿* - 吴雄君的博文
* 作者郭更生教授:曾任IEEE Transactions on Communications Magazine总编,IEEE Communications Magazine高级技术编辑,台湾某大学教 ...
- Java对象的两大特征_科学网—Java 面向对象的四个特征 - 李玖栋的博文
1.抽象: 抽象--就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.(就是把现实世界中的某一类东西,提取出来,用程序代码表示,抽象出来一般叫做类或者接口.)抽象并不打 ...
- r语言做绘制精美pcoa图_科学网—R语言 PCA PCoA ggplot2 - 靳泽星的博文
这一篇是衔接上一篇的,就是要用ggplot2程序包对PCA和PCoA进行可视化.代码我直接照搬过来了,只是绘图的时候用ggplot函数.ggplot2包实现了一个在R中基于全面一致的语法创建图形时的系 ...
- pfamscan 的使用_科学网—[转载]InterProScan的使用教程 - 黄顺谋的博文
InterPro是一个数据库,其提供蛋白序列的功能分析并归纳为一个个蛋白家族,同时还预测了presence of domains和important sites.为了将蛋白分类,InterPro使用先 ...
- mh采样算法推导_科学网—MCMC中的Metropolis Hastings抽样法 - 张金龙的博文
Metropolis Hastings抽样法示例 jinlongzhang01@gmail.com Metropolis Hasting(下面简称MH)是蒙特卡罗马尔科夫链中一种重要的抽样方法.本文简 ...
最新文章
- Tomcat软件的目录结构、作用
- python pandas rename_使用Pandas重命名文件
- 前端学习(2818):小程序学习之新建页面
- 手机音视频应用开发(专注于Symbian、iPhone、Android等跨平台音视频应用开发方案)
- python3ubunton安装视频_ubuntu16.04安装python3的包报错
- PB中实现备份数据库/还原数据库
- 用truffle部署智能合约到以太坊网络(truffle+infura)的简易方法
- SpringCloud→分布式解决方案、包含主要工具、启动流程、web发展阶段、实现配置中心
- Django 创建model的一些注意事项
- Selenium自动化测试——计算器加法测试
- 实验五:py求函数驻点极大小值凹凸区间拐点
- @Zabbix报表系统ZbxTable
- matlab中ode的用法,关于matlab 的ode45用法
- java-php-python-ssm新生报到管理系统计算机毕业设计
- 如何更有效的进行面试
- 使用Google身份验证进行ssh二次验证
- 查询出部门名称、部门的员工数、部门的平均工资、部门的最低收入雇员姓名和最高收入雇员的姓名
- 计及需求侧响应日前、日内两阶段鲁棒备用优化(Matlab代码实现)
- Chrome教程(一)NetWork面板分析网络请求
- 推荐算法!基于隐语义模型的协同过滤推荐之用户商品推荐列表
热门文章
- iOS 内购详解及遇到的坑
- leecode第二百九十二题(Nim游戏)
- web.xml的简单解释以及Hello1中web.xml的简单分析
- Linux下计算进程的CPU占用和内存占用的编程方法[转]
- 走进JavaScript
- iOS项目开发实战——通过Http Get方式与server通信
- Spring IoC — 基于Java类的配置
- css3中的文字效果
- ASP.NET MVC3 中整合 NHibernate3.3、Spring.NET2.0 使用AOP执行事务处理
- ExtJs + Struts2 + JSON 程序总结