从 MATLAB LaTeX 发布中删除 \vspace{1em}

从 MATLAB LaTeX 发布中删除 \vspace{1em}

将 m 文件从 MATLAB 发布到 LaTeX 时,每个文本段落后都会插入 1em 的垂直空间。我经常使用该standalone软件包将这些已发布的文件直接输入到主文档中,但 1em 垂直空间与其他排版看起来不太好。

我的问题是,有没有办法在主文档的序言中说明以某种方式忽略该命令\vspace{1em}

母语:

\documentclass{article}
\usepackage{graphicx}
\usepackage{color}  
\sloppy 
\definecolor{lightgray}{gray}{0.5}
\setlength{\parindent}{0pt}
\begin{document}

\begin{par}
Some text
\end{par} \vspace{1em}
\begin{verbatim}
syms x
x=solve(3*x-3==2)
\end{verbatim}
\color{lightgray} \begin{verbatim} 
x =

5/3

\end{verbatim} \color{black}
\begin{par}
Some more text
\end{par} \vspace{1em}

\end{document}

m文件:

%%
% Some text
syms x
x=solve(3*x-3==2)
%%
% Some more text

答案1

我想使用文本编辑器、sed 或类似的东西来编辑源文件是一种简单的方法,或者丹尼尔·E·舒布的答案可以帮助您创建不带的初始文件\vspace{1em},对于任何现有文件,您可以使用以下命令:

在 LaTeX 中你可以替换全部 \vspace{1em}通过添加以下内容,无需任何操作:

\usepackage{xstring}
\let\Oldvspace\vspace
\renewcommand{\vspace}[1]{\IfEq{#1}{1em}{}{\Oldvspace{#1}}}

如果您在另一个环境中使用这些图形,您也可以将renewenvironment其仅应用于该环境。

答案2

另一种方法是修改 MATLAB 样式以生成您想要的文本。

LaTeX 的默认样式表mxdom2latex.xsl(在 R2011a 中位于...toolbox/matlab/codetools/private/)包含以下部分

<xsl:template match="p">\begin{par}
<xsl:apply-templates/><xsl:text>
\end{par} \vspace{1em}
</xsl:text>
</xsl:template>

编辑样式(或创建新样式)应该\vspace{1em}可以得到您想要的结果。

假设您将样式表重命名为,那么mylatex.xsl在 MATLAB 中,您可以myfile.m使用以下内容在 MATLAB 中发布

publish('myfile.m', struct('stylesheet', [pwd, filesep, 'mylatex.xsl'], 'format', 'latex'));

相关内容