代码片段如下: ``` %!TeX encoding = UTF-8 %!TeX program = xelatex \documentclass{article} \usepackage{listings} \usepackage[UTF8]{ctex} \usepackage{color} \usepackage{geometry} \usepackage{longtable} \geometry{a4paper,left=1cm,right=1cm,top=1cm,bottom=1cm} \definecolor{codegreen}{rgb}{0,0.6,0} \definecolor{codegray}{rgb}{0.5,0.5,0.5} \definecolor{codepurple}{rgb}{0.58,0,0.82} \definecolor{backcolour}{rgb}{0.95,0.95,0.92} \lstdefinestyle{mystyle}{ backgroundcolor=\color{backcolour}, commentstyle=\color{codegreen}, keywordstyle=\color{magenta}, numberstyle=\tiny\color{codegray}, stringstyle=\color{codepurple}, basicstyle=\small\ttfamily, breakatwhitespace=false, breaklines=true, captionpos=b, keepspaces=true, numbers=left, numbersep=5pt, showspaces=false, showstringspaces=false, showtabs=false, tabsize=4 } \lstset{style=mystyle} \begin{document} \begin{longtable}{|p{2cm}|p{15cm}|} \hline 行一 & \begin{lstlisting} linux command 0 #命令0 linux command 1 #命令1 linux command 2 #命令2 \end{lstlisting}\\\hline 行二 & \\\hline 行三 & \\\hline \end{longtable} \end{document} ``` ![](https://wenda.latexstudio.net/data/attach/190920/HxNKRXOO.png) 就是把上图中,两个蓝色箭头的的空白去掉. 用代码的好处是, 好多命令行中的有下划线之类的字符,不用直接转义.也可以复制出来在终端上直接执行.

3 回答3

2
把这部分内容放到一个`minipage`里,解释详见 https://www.zhihu.com/question/64671802/answer/222991752
  • 谢谢了. – llxwj 2019-09-20 11:14 回复
1
这是一个不好处理的版式,可以看看这里 [https://tex.stackexchange.com/questions/119546/lstlisting-in-a-tabular-environment](https://tex.stackexchange.com/questions/119546/lstlisting-in-a-tabular-environment)
1
使用 `listings` 的 `beforeskip` 和 `afterskip` 选项 ```tex \documentclass{article} \usepackage{listings} \usepackage[UTF8]{ctex} \usepackage{color} \usepackage{longtable} \definecolor{backcolour}{rgb}{0.95,0.95,0.92} \lstset{ backgroundcolor=\color{backcolour}, basicstyle=\small\ttfamily, aboveskip=-1.5ex, belowskip=-3.5ex } \begin{document} \begin{longtable}{|p{2cm}|p{10cm}|} \hline 行一 & \begin{lstlisting}[gobble=2] linux command 0 #命令0 linux command 1 #命令1 linux command 2 #命令2 \end{lstlisting} \\ \hline 行二 & \\\hline 行三 & \\\hline \end{longtable} \end{document} ``` 参考 https://tex.stackexchange.com/a/392601 PS:使用 `minipage` 环境无法彻底消除上方的额外空白
  • 回复 llxwj :可以通过 \lstnewenvironment 命令定义新的类似 lstlisting 的环境,见回答里的参考链接。 – Carcino 2019-09-21 09:43 回复
  • lstlisting的内容在表格内上下移动. – llxwj 2019-09-20 15:19 回复
  • 我目前还不会自定义命令,我认为, latex 应该有把minipage 和lstlisting定义成一个组合命令的方法, 两种方法都能解决我的问题,这个方法更精准一些,通过调整参数的大小,能明确的看到 – llxwj 2019-09-20 15:18 回复
  • 这个方法也厉害,完全能满足效果,对比用minipage的方法,要简单一些,不用在所有的lstlisting前面嵌入minipage – llxwj 2019-09-20 15:16 回复

你的回答

请登录后回答

你的回答将会帮助更多人,请务必认真回答问题。