LaTeX lstlisting环境中执行LaTeX代码
2018-01-09 20:32
246 查看
问题提出
有一段Visual Basic 代码,需要在LaTeX文档中生成:Private Sub Form_Click() Print For i = 1 To 5 Print Tab(i); String(6 - i, "▼"); Spc(6); String(i, "▲") Next i End Sub
我在利用LATEX排版文档时,书写Visual Basic语言使用的是包listings,前导区如下书写:
\usepackage{listings} \usepackage{xcolor} \lstset { breaklines=true, tabsize=3, showstringspaces=false } \lstdefinestyle{Common} { extendedchars=\true, language={[Visual]Basic}, frame=single, %=========================================================== framesep=3pt,%expand outward. framerule=0.4pt,%expand outward. xleftmargin=3.4pt,%make the frame fits in the text area. xrightmargin=3.4pt,%make the frame fits in the text area. %=========================================================== rulecolor=\color{red} } \lstdefinestyle{A} { style=Common, backgroundcolor=\color{yellow!10}, %basicstyle=\scriptsize\color{black}\ttfamily, basicstyle=\small\color{black}\ttfamily, keywordstyle=\color{orange}, identifierstyle=\color{cyan}, stringstyle=\color{red}, commentstyle=\color{green} }
在正文部分,我使用下面LATEX代码排版Visual Basic代码:
\begin{lstlisting}[style=A]
Private Sub Form_Click() Print For i = 1 To 5 Print Tab(i); String(6 - i, "▼"); Spc(6); String(i, "▲") Next i End Sub
\end{lstlisting}
编译,输出结果中,始终无法出现这两个特殊符号:”▼”和”▲”。如何在lstlisting环境中显示、打印出这两个特殊字符?这是一个问题。
问题解决方法
我将上述问题分解为如下两个问题:如何在LaTeX中(非lstlisting环境中)显示这两个特殊符号?
如何将这两个特殊符号的LATEX Code 放置到lstlisting环境中,从而在该环境中正确显示该符号?
我最终费一番功夫,沿着上述思路解决了该问题。首先看对问题1的解答,通过baidu搜索,得知《LaTeX数学公式的符号表示》中有这两个特殊符号的表示代码,如下:
\blacktriangledown \blacktriangle
注意上述代码必须放到数学环境下才能成功。
现在来看第二个问题的解答。我利用Baidu搜索得不到任何答案,没人遇到这方面的问题。因为国内使用LaTeX书写文档的人本来就很少,且集中在高等学校的研究生、教师。另外,本文的问题是一个很奇怪的问题,代码中怎么可能放入一些特殊的符号呢?写代码就好好的写代码,怎么能在其中写一些奇奇怪怪的字符呢?所以在国内遇到该问题的人几乎没有。按照我解决问题的惯例,问题还是出在listings包的使用方面,也就是说,该包的某些使用细节我还没有掌握。当然,现在从头开始读厚厚的listings包的使用手册不太现实,还必须从搜索别人的答案着手。
baidu不起作用,Google在国内又用不上,我只有借助于微软的Bing搜索,该搜索引擎分为两个版本,国内和国际。用英文使用国际版。在搜索本问题时,如何选择合适的搜索关键字也非常重要。经过一番功夫,我使用的搜索关键字是:
LaTeX lstlisting environment execute LaTeX code
最终,我搜索到一篇《lstlisting environment: applying syntax typesetting to escaped code》,里面有作者相关的讲解,该文作者遇到的问题与我遇到的问题相似,我借鉴他的思路,在\lstdefinestyle{A}中的设置中的最后增加了如下代码:
escapeinside={(*@}{@*)}
紧接着,在正文的lstlisting环境中这样书写:
\begin{lstlisting}[style=A] Private Sub Form_Click() Print For i = 1 To 5 Print Tab(i); String(6 - i, "(*@$\blacktriangledown$@*)"); Spc(6); String(i, "(*@$\blacktriangle$@*)") Next i End Sub \end{lstlisting}
运行结果如下:
相关文章推荐
- latex lstlisting备用代码
- 深入理解 GNU GRUB - 03 diskboot.S 3.1 diskboot.S执行时的环境 & 3.2 diskboot.S代码结构
- windows环境下把Python代码打包成独立执行的exe可执行文件
- 浏览器环境下JavaScript脚本加载与执行探析之代码执行顺序
- S3C2440启动代码中应用程序执行环境的初始化
- 浏览器环境下JavaScript脚本加载与执行探析之代码执行顺序
- Chrome扩展修改页面代码执行环境的方法
- javascript笔记:通过对作用域链和执行环境的深入理解所得出的提高javascript代码性能的建议
- javascript笔记:通过对作用域链和执行环境的深入理解所得出的提高javascript代码性能的建议
- 如何在服务器(Linux)里面定时(crontab)执行需要虚拟环境(venv)的代码(爬虫)
- 判断代码执行环境
- 自定判断代码的执行环境
- 一个问题 - 当你写一段代码时,你是否会考虑这份代码可能面临的各种执行环境
- “代码执行环境”浅谈
- latex lstlisting
- S3C2440启动代码中应用程序执行环境的初始化
- 在类库内部判断代码执行环境
- 在VC环境下执行代码出现错误
- Windows环境下用PerlApp将代码打包成可执行程序教程_小公猫-ChinaUnix博客
- Windows环境Vim编辑器如何执行Ruby代码