在单元格内的 lstinline 中包含前导空格

在单元格内的 lstinline 中包含前导空格

以下是 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}

结果:

在此处输入图片描述

相关内容