加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Latex图片排版:图片宽度大于 textwidth 的情况(原创)

(2013-11-08 13:39:50)
标签:

it

分类: Latex
Latex里面插图是一件很麻烦的事情,特别是当所插入的图片要满足一些特殊的排版要求的时候。Latex中的文本宽度textwidth的默认设置只有14.5cm,如果将Latex的页面设为A4纸,纸的宽度paperwidth有21cm的宽度,这样子的话两边的页边距就很宽,如果想并排放入两张图片,每张图片的宽度不能超过7cm,否则图片就只能两行排列了。如果需要插入的图片的宽度大于textwidth的时候,就比较麻烦了。我尝试调整textwidth的宽度,但是不知道什么原因,Ctex里面的textwidth貌似调节起来完全无效。只能想想别的办法了。

在网上找了半天资料,其中一种比较简单的解决方法就是使用Latex的box功能中的\makebox命令,\makebox的语法为:
\makebox[width][position]{text}
width: 设定盒子中放置内容的宽度
position:设定内容在盒子中的排列方式,默认参数为c(居中对齐),还可以是使用参数l(左对齐)、r(右对齐)、s(两端对齐)
text:所要放置在盒子中的内容,可以是文本,也可以是图片

\makebox 命令有一个trick,虽然说width参数可以用来设置盒子的宽度,但是如果要放入盒子中的内容text的宽度超过了width设置的宽度,position参数所起到的效果将是不一样的。如下所示:

  http://s4/mw690/001R6PMwgy6E3HrUQnNe3&690textwidth 的情况(原创)" TITLE="Latex图片排版:图片宽度大于 textwidth 的情况(原创)" />
\framebox[5cm][c]{This is a makebox test}
\framebox[5cm][l]{This is a makebox test}
\framebox[5cm][r]{This is a makebox test}
\framebox[5cm][s]{This is a makebox test}


\framebox[2cm][c]{This is a makebox test}
\framebox[2cm][l]{This is a makebox test}
\framebox[2cm][r]{This is a makebox test}
\framebox[2cm][s]{This is a makebox test}


如上图所示,左边的Latex命令依次产生右边的排版效果,为了便于理解,这里我使用framebox代替了makebox,它们在功能上是完全一样的,只是framebox会给内容添加边框。我们看到,当textwidth的宽度大于text宽度时,position的排版以盒子宽度为参考,但是当textwidth的宽度小于text的宽度时,如果文本很长,右对齐或者居中时会超出纸的宽度而溢出,两端对齐则几乎不起作用。

这里要注意的是makebox中的内容无论多长都只放在一行,而不会换行。如果需要换行设置,则需要使用minipage和parbox命令。这里主要讲图片并排设置,关键就是让图形不要自动换行,makebox可以把每张图形当作这一行的一个元素来处理。具体命令如下:

\begin{figure}[H]
  \centering
  \noindent\makebox[\textwidth][c] {
    \includegraphics[width=0.45\paperwidth]{pic1.ps}
    \includegraphics[width=0.45\paperwidth]{pic2.ps} }

  \noindent\makebox[\textwidth][c] {
    \includegraphics[width=0.45\paperwidth]{pic3.ps}
    \includegraphics[width=0.45\paperwidth]{pic4.ps} }
\end{figure}


上面的命令可以放置两行两列图片,每行的图片总宽度为所用纸张宽度的0.9倍。这样子的话,只要设置的图片总宽度不要超过纸的宽度paperwidth,就可以并排放置自己想要的图片数目了。

当图片的放置问题解决了之后,随之而来你会发现另一个问题,如果要为图片在下方添加\caption{}图片注释的时候,\caption的宽度依旧是textwidth的宽度,这样子整个图片排版就显得头重脚轻很不美观。为了解决这个问题,我们只需要在文章开头包含Latex的一个自带的用来调整\caption排版性质的包caption2(这个包里有很多有用的设置命令)并设置\caption文本的宽度即可:

\usepackage{caption2}
\setcaptionwidth{0.75\paperwidth}


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有