将 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'));