Latex变量自动化:直接从Stata和MATLAB为Latex编写变量

Latex变量自动化:直接从Stata和MATLAB为Latex编写变量,matlab,latex,stata,Matlab,Latex,Stata,我正在从事这个项目,它需要在服务器上分析一个大的(>50GB)数据集,包括Stata和MATLAB。这两个部分都是必需的,我不能只使用其中一个 我的最终目标是生成一个名为commands.tex的.tex文件,如下所示: \newcommand{\var1}{val1} \newcommand{\var2}{val2} % MATLAB file matlab_file.m on DD/MM/YYYY \newcommand{\var3}{val3} % Stata fil

我正在从事这个项目,它需要在服务器上分析一个大的(>50GB)数据集,包括Stata和MATLAB。这两个部分都是必需的,我不能只使用其中一个

我的最终目标是生成一个名为
commands.tex
的.tex文件,如下所示:

 \newcommand{\var1}{val1}
 \newcommand{\var2}{val2}     % MATLAB file matlab_file.m on DD/MM/YYYY
 \newcommand{\var3}{val3}     % Stata file stata_file.m on DD/MM/YYYY    
 ...
sysuse auto
reg price weight
define_variable PriceWeight = _b[weight], format(%4.2f) 
其中变量按字母顺序排列,每个值很可能是一个数字。请注意,注释中的命令将帮助我跟踪生成值的位置。该文件的用途是,在序言之后,我可以通过以下方式使用LaTeX:

 <preamble>
 \input{commands.tex}
 \begin{document}
 Variable 1 has a value of \var1 and variable 2 has a value of \var2.
 \end{document}
我希望代码能做到的是:

  • 如果
    \newcommand{\PriceWeight}
    commands.tex
    中不存在,则它会将其值添加到列表中,并保留字母顺序
  • 如果变量存在,那么它将删除其值并在其上方重写,值以标量形式给出
  • 我知道如何在Stata中给程序赋值,但我不知道如何使用这些值并执行必要的命令。语法类似于:

    program define define_variable
       syntax anything = X, [format(string)]
       <other code>
    end
    
    clc; clear;
    PriceWeight = 3
    define_variable('PriceWeight',PriceWeight,format)
    

    同样,它会自动转到单个文件并相应地更新它。非常感谢您提供的任何帮助。

    基于您的评论,并假设您包含所有相关变量的文件并不庞大,我建议将您的数据从Stata获取到Matlab,并根据需要更新您的变量(如果您有一个名称列表,请使用
    exist
    strcmp
    等函数).一个快速的谷歌搜索给了我

    为了便于处理,您可能需要创建一个单元格(我称之为
    C
    ),其中一列包含所有变量名,另一列包含标量值

    然后,一旦你组装了所有变量,你就可以
    按字母顺序对你的单元格进行排序
    ,并用.tex文件将其写入文件。当然,你可以写一个.tex文件,然后用类似的东西在单元格上迭代

    fprintf(fID,'\newcommand{\%s}{%f} ',C{i,1},C{i,2})
    

    我希望这是可以理解和帮助的。

    每个报告中除了要插入的变量外,还有多少文本?此外,您还讨论了插入和更新变量,这应该多久发生一次。您希望经常获得commands.tex的更新版本吗?一般来说,我不确定是否将tex文件视为某种类型的d文件ata银行是理想的,如果我正确理解您想要做什么,我想使用随机样本运行do文件,生成一些变量,然后运行Matlab文件,生成一些其他变量。基于此编写一份报告,然后使用完整样本再次运行所有内容,这可能需要几天时间,一旦我有过完整样本,就可以根据完整样本重新编译事实上,我不在乎它是tex文件还是csv或txt文件,只要我以后可以从中生成latex变量。