2009年5月17日

latex实现带换行的文本框

这个东西在搜索引擎上几乎找不到答案(这篇blog希望能够使得通过搜索引擎能够找到这个解决方案)。

问题是这样的,我想在latex里实现带换行功能的文本框。

最直接的想到了如下代码

\fbox{abcd \\ abcd \\ abcd}

生成文件后你会发现,这里的换行根本不起作用。

开始已经找到了pstricks还有tikz来实现这个功能(也花了好几个小时来了解)。但是最终发现这个东西只能在pdflatex编译模式下实现。我现在的文章必须用dvipdf模式,为此不得不放弃这种方法。

后来在看latex的flowdoc包的demo时,不经意间发现这里能够实现换行功能。仔细分析,原来采用了\shortstack命令来实现。查看了一些资料后得知其语法如下:

\shortstack[位置]{图文物件}

这会像叠罗汉一样的把「图文物件」叠在一个栏位内,和叠罗汉不同的是,后进的叠在最下面,先进的会被往上堆高,底部的基准线是固定的,高度则是往上增高,各图文物件由换行符号来换行,也就是说可以由换行符号来决定他们之间的间隔。当然,这要自行注意他的高度,否则会和其上的其他内容重叠。「位置」可为l, r, c之一,是指居中,或靠这个栏位的左右边的意思。



最终我的带换行的不受编译模式限制的文本框实现如下:

\fbox{\shortstack[l]{abcd \\ abcd \\ abcd}}



哎!原来这样简单,加一个shortstack就行了,让我折腾了一个下午。备份与此,仅供参考,希望能够节省寻找同样问题答案的朋友的时间!

6 条评论:

noool 说...

在fbox里面插入一个minipage应该可以自动换行啊

Unknown 说...

一定要说声谢谢,google了好久全是不负责任的建议"\\"or"\newline"。谢谢啦~! :)

Bill Lang 说...

To Jin Huang:
多年前的帖子还能发挥作用,很开心。不必客气咯

匿名 说...

剛好需要,謝謝你

匿名 说...

剛好需要,謝謝你

Unknown 说...

天哪,2022年回来评论一下 真的好用!感谢感谢!