以下是 MWE:
% !TEX program = xelatex
\documentclass{scrbook}
\usepackage{listings}
\usepackage{makecell}
\usepackage{booktabs}
\lstset{
basicstyle=\fontsize{9}{11}\ttfamily,
}
\begin{document}
\lstinline{Without leading space}
\lstinline{ With leading space}
\begin{tabular}{ l }
\midrule
\makecell[cl]{{\lstinline!First!} \\ {\lstinline! Second!}} \\
\midrule
\end{tabular}
\end{document}
输出为:
我试图让“second”从“First”缩进 4 个字符。表格单元格外部的前导空格是有效的,但表格单元格内部的空格无效。
有什么想法可以解决吗?
答案1
\lstinline
如果您将另一个命令的参数放入其中(此处:),则会遇到问题,\makecell
因为它不再发挥其 catcode 魔力——丢失的空格就是其中之一,其他的还有注释字符和命令。将逐字直接放入单元格中要安全得多:
\documentclass{scrbook}
\usepackage{listings}
\usepackage{makecell}
\usepackage{booktabs}
\lstset{
basicstyle=\fontsize{9}{11}\ttfamily,
}
\begin{document}
\lstinline{Without leading space}
\lstinline{ With leading space}
\textbf{\lstinline{ With lost leading space}}
\begin{tabular}{ l }
\midrule
\lstinline!First!\\
\lstinline! Second!\\
\midrule
\end{tabular}
\end{document}
答案2
您可以将 放入lstinline
迷你页面中。缺点:我不确定如何将其与 一起使用makecell
,并且您必须手动设置迷你页面大小。优点:它有效。
\documentclass{scrbook}
\usepackage{listings}
%\usepackage{makecell}
\usepackage{booktabs}
\lstset{
basicstyle=\fontsize{9}{11}\ttfamily,
}
\begin{document}
\lstinline{Without leading space}
\lstinline{ With leading space}
\begin{tabular}{l}
\midrule
\begin{minipage}[t][22pt][t]{0.25\textwidth}\lstinline!First!\\\lstinline! Second! \end{minipage} \\
\midrule
\end{tabular}
\end{document}
结果: