LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1228|回复: 3

有人用latex吗?问个问题

[复制链接]
发表于 2007-4-19 22:44:55 | 显示全部楼层 |阅读模式
怎样实现下面两种效果,主要就是怎么显示源文本。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2007-4-20 07:37:13 | 显示全部楼层
试试 listings 包吧,可以实现语法加亮等功能,不过和楼主要求的这种格式还是有区别的,比如那个 The not so Short Introduction to LaTeX 的截图中,它是用一个命令把一份内容以两种格式(源码形式与“编译”形式)来显示。这部分可以看看其 .tex 文件它是如何做的。CTeX FAQ 中似乎也有类似的东东,可以看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-20 09:41:43 | 显示全部楼层
根据我查的一些资料,输出未排版的文本可以用\begin{verbatim} \end{verbatim}或者用\verb+...+的格式,但是这两种好像都不能和fbox和parbox组合使用来达成我要的效果。

网上说的可以用来显示源文本的宏包listings和fancyvrb,我在CTAN找不到可供tetex(texlive)使用的版本,就用MiKTeX的那个包可以吗?
回复 支持 反对

使用道具 举报

发表于 2007-4-20 11:10:40 | 显示全部楼层
我用 texlive 只用过光盘版的,里面是带有 listings 包的

\verb++ 适合于在段落中较短的内容使用

verbatim 环境在与其它环境配合时似乎有很多限制,比较郁闷,而且只是最基本的原样照显

listings 包提供的 lstlisting 环境同样不容易与其它环境配合,好处是可以控制加亮与格式

我查了一下 lshort 的代码,里面自定义了一个环境 example,我把里面的代码帖出来
  1. % --- example ----
  2. % This is an environment to set LaTeX examples.
  3. % On the left side the source text and on the
  4. % right side the typeset text.
  5. %
  6. % \begin{example}
  7. % \Large This is Large
  8. % \end{example}
  9. %
  10. % This Part is stolen from the verbaim.sty by FMi
  11. %
  12. \newwrite\example@out
  13. \newcounter{exacnt}
  14. \setcounter{exacnt}{1}
  15. \newlength{\savefboxrule}
  16. \newlength{\savefboxsep}
  17. \newlength{\outdent}
  18. \setlength{\outdent}{2cm}
  19. \addtolength{\headwidth}{\outdent}
  20. \newenvironment{example}%
  21. {\begingroup% Lets Keep the Changes Local
  22.   \@bsphack
  23.   \immediate\openout \example@out \jobname.exa
  24.   \let\do\@makeother\dospecials\catcode`\^^M\active
  25.   \def\verbatim@processline{%
  26.     \immediate\write\example@out{\the\verbatim@line}}%
  27.   \verbatim@start}%
  28. {\immediate\closeout\example@out\@esphack\endgroup%
  29.                                 %
  30.                                 % And here comes my part. :-
  31.                                 %   
  32.   \stepcounter{exacnt}%
  33.   \setlength{\parindent}{0pt}%
  34.   \par\addvspace{3.0ex plus 0.8ex minus 0.5ex}\vskip -\parskip
  35. %  Page \lsspageref{exa:\theexacnt}
  36. \expandafter\ifx\csname r@exa\theexacnt\endcsname\relax\else
  37. %\ifx\pdfoutput\undefined % We're not running pdftex
  38. %  \ifodd\lsspageref{exa\theexacnt}\hspace*{0pt}\else\hspace*{-\outdent}\fi%
  39. %\else
  40. % HyPsd@pageref internal hyperref command v6.69c
  41.   \ifodd\HyPsd@pageref{exa\theexacnt}\hspace*{0pt}\else\hspace*{-\outdent}\fi%
  42. %\fi
  43. \fi
  44. \makebox[\textwidth][l]{%
  45. %\raisebox{-\height}[0pt][\totalheight]{%
  46.   \begin{minipage}[c]{0.5\outdent+0.46\textwidth-3mm}%
  47.     \small\verbatiminput{\jobname.exa}
  48.   \end{minipage}%
  49.                                 %}%
  50.   \hspace{5mm}%
  51.   \setlength{\savefboxrule}{\fboxrule}%
  52.   \setlength{\fboxrule}{0.1pt}%
  53.   \setlength{\savefboxsep}{\fboxsep}%
  54.   \setlength{\fboxsep}{3mm}%
  55.                                 %  \raisebox{-\height}[0pt][\totalheight]{%
  56.   \fbox{%
  57.     \begin{minipage}{0.5\outdent+0.54\textwidth-3.5mm-2\fboxrule-2\fboxsep}%
  58.       \setlength{\fboxrule}{\savefboxrule}%
  59.       \setlength{\fboxsep}{\savefboxsep}%
  60.       \setlength{\fboxrule}{0.5pt}%
  61.       \setlength{\parskip}{1ex plus 0.4ex minus 0.2ex}%
  62.       \begin{trivlist}\item\small\input{\jobname.exa}
  63.       \end{trivlist}
  64.     \end{minipage}
  65.     }%
  66. %  }%
  67. }\label{exa\theexacnt}%
  68. \par\addvspace{3ex plus 0.8ex minus 0.5ex}\vskip -\parskip
  69. }
复制代码
对 LaTeX 了解并不是很多,不知道摘的这部分是否有多余或缺少,楼主最好自己看一下 lshort 源码中的 lshort.sty
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表