我正在使用 Stata 的一个插件来生成 Latex 表,以显示某些模型的估计结果和重要性水平。
其中一个程序创建了以下形式的表格,然后我使用该expl3
包将其输入到另一个文档中。我提供了此文件的改编版 MWE,我将其称为 mwe2.tex:
\begin{tabular}{ccc}\hline
line 1 & a & b \\ \hline
main & & \\ \hline
x & y & z \\ \hline
\end{tabular}
由于某种原因,其中有一行仅包含术语“main”,而其他行则为空。此项需要删除。 现在我要能编辑并使用(而上面的代码已给出)。我通过以下方式输入上述代码:
\documentclass[12pt]{scrartcl}
\usepackage{l3regex}
\usepackage{xparse}
\ExplSyntaxOn
\ior_new:N \l_marie_input_stream
\NewDocumentCommand{\SearchAndReplace}{mmm}{%
\ior_open:Nn \l_marie_input_stream {#1}% Open the file
\ior_map_inline:Nn \l_marie_input_stream {% Read line by line
\tl_set:Nn \l_tmpa_tl {##1}% Store the line
\regex_replace_all:nnN {#2} {#3} \l_tmpa_tl % Replace #2 by #3
\tl_use:N \l_tmpa_tl % Display the (modified) line content
}
\ior_close:N \l_marie_input_stream % close the file
}
\ExplSyntaxOff
\begin{document}
abc\\
\SearchAndReplace{mwe2}{main}{maaaain}
def
\end{document}
按照以下解决方案这个问题,我输入文件时将术语替换main
为其他内容,但没有替换为%main
,因为这样编译会出错。
我尝试用空格替换整行,即
\SearchAndReplace{mwe2}{main& & \\}{ }
但这样做没有用——什么都没有改变。我精确地将上面整行的内容复制到另一个文档的“替换框”中,但无济于事。
main
我的第二个想法是简单地用替换工作,这样做可以正常工作,但在文档中留下了一行空行:
\SearchAndReplace{mwe2}{main}{ }
我的计划是更换main
一些其他代码,使我将表格中的行高设置为 0。这样,我就可以找到一种解决方法,通过删除内容并将其高度设置为零,实际上删除了不必要的行。但是,我做了一些研究,却找不到乳胶中可用于定义单个高度的命令,具体的行为零。
答案1
由于不熟悉expl3
,我建议在这种情况下使用 shell 转义。您必须根据操作系统进行调整,但在类 Unix 上非常简单;让此文件成为main.tex
:
\documentclass[12pt]{scrartcl}
\begin{document}
abc
\input{|"grep -v ^main mwe2.tex"}
def
\end{document}
...然后运行它pdflatex --shell-escape main-tex
命令
grep -v ^main file
输出所有行file
输出其中不要( -v
) 以单词“main”开头 ( ^
),结果输入到 LaTeX 中,它永远不会看到以“main”开头的行。
结果:
注意:以下旧答案是针对该问题的第一个版本,完全不同......
嗯...放一个%
在这里,在“main”之前添加一个(注释)是可行的。(对于“work”来说,它没有什么价值 --- 你应该真的编辑您的代码片段,使其可编译,并且包含您加载的所有可能产生差异的包和选项)。
\documentclass{article}
\begin{document}
{
\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}
\begin{tabular}{l*{6}{c}}
\hline\hline
&\multicolumn{1}{c}{(1)}&\multicolumn{1}{c}{(2)}&\multicolumn{1}{c}{(3)}&\multicolumn{1}{c}{(4)}&\multicolumn{1}{c}{(5)}&\multicolumn{1}{c}{(6)}\\
&\multicolumn{1}{c}{collage}&\multicolumn{1}{c}{big}&\multicolumn{1}{c}{small}&\multicolumn{1}{c}{together}&\multicolumn{1}{c}{separated}&\multicolumn{1}{c}{nophoto}\\
\hline
%main & & & & & & \\
\(N\) & 798 & 791 & 803 & 803 & 798 & 435 \\
\hline\hline
\end{tabular}
}