提问于:
浏览数:
3686
代码片段如下:
```
%!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 回答
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` 环境无法彻底消除上方的额外空白
-
-
-
我目前还不会自定义命令,我认为, latex 应该有把minipage 和lstlisting定义成一个组合命令的方法, 两种方法都能解决我的问题,这个方法更精准一些,通过调整参数的大小,能明确的看到 – llxwj 2019-09-20 15:18 回复
-
你的回答
请登录后回答
你的回答将会帮助更多人,请务必认真回答问题。