Journal 要求我将 Latex 文件合并为单个文件

Journal 要求我将 Latex 文件合并为单个文件

我正在写一篇由多个部分组成的文章。对于每个部分,我或多或少都有一个单独的 tex 文件,它们位于主文件中。我现在要提交的期刊要求我将所有文件集成到一个文件中。我只是想知道,这不是很糟糕的做法吗?我的意思是,LaTeX 提供命令include是有原因的。include

这不是一个很大的问题,我只是希望听到一些意见。

答案1

作为一种一般做法,我喜欢用它\include来保持一切干净整洁,特别是因为它允许我只包含我想要的文件。

也就是说,当您有一个很大的文档时,您可以使用\includeonly{chapter1,chapter2},这样可以忽略其余内容,只编译第 1 章和第 2 章。

现在,如果他们要求您将所有内容放在一个文件中,只需遵守...也许是因为文件存储的目的而要求这样做(或者也许他们只是不想将很多文件与一个作者相关联)。

无论如何,你也可以看看这篇文章何时应使用 \input 和 \include?了解有关\include和几个文件项目的更多信息。

答案2

他们可能在出版过程中不使用 TeX,而是(最有可能 - 您是在谈论 AIP 期刊吗?)使用 XML。他们可能有将输入转换为 XML 的脚本 - 以考虑所有可能发生的情况的方式编写它们很麻烦。

我使用 pgfplots 和 tikz 来绘制图表,因此提交时必须将所有内容合并到一个文件中。我编写了一个 perl 脚本,用于解析 csv 输入文件并输出 LaTeX 代码。但最终,我不得不将所有图形提交为 pdf:他们的 TeX 引擎阻塞了我的文件,尽管所有其他在线编译器和我的本地安装都运行正常。无法让它工作...

无论如何,如果您感兴趣的话,这里有一个 perl 脚本。请记住:它只解析文件并输出 LaTeX 代码 - 它实际上并没有组合所有代码片段。它快速而粗糙,但如果您想尝试一下,这是一个很好的起点。

我的建议:只需将 biblatex 和所有其他内容复制到一个文件中作为最后一步,然后将图形作为 PDF 提交。

#! C:/Programme/Perl/bin/perl -w
use strict;

unless(@ARGV<1){ # Check if input file is given as a commandline argument
    open(FILE,"<".$ARGV[0]) or die("Error reading file: ".$ARGV[0]." ".$!);
    my $textraw="";
    while(<FILE>){$textraw.=$_;}
    close(FILE) or die("Error closing file: ".$ARGV[0]." ".$!);
    my $patternMatch;
    my @addplot;
    my $n=0;
    while($textraw =~ /(\\addplot.*?)table\[(.*?)?,?\s?x expr\=(.*?),y expr\=(.*?)\]\n\s+\{([^\}]*)\}/sg){
        $patternMatch++;
        my $plotCommand=$1;
        my $skipRows=$2;
        my @xCol;
        $xCol[0]=$3;
        my @yCol;
        $yCol[0]=$4;
        my $DataFileName=$5;
        if($skipRows){$skipRows=~s/skip first n=(\d)/$1/g;}
        else{$skipRows=0;}
        open(FILE,"<".$DataFileName) or die("Error reading file: ".$DataFileName." ".$!);
            my $i;
            #$addplot[$n]=$1."coordinates {";
            print $1."coordinates {";
            LINE:while(<FILE>){
                my $xCoord;
                my $yCoord;
                chomp($_);
                $i++;
                if($i<=$skipRows){next LINE;}
                if(($xCol[0]=~m/\\thisrow\{/)||($yCol[0]=~m/\\thisrow\{/)){
                    # I was going to put logic here to account for people using \thisrow.
                    # Screw this - it's too much hassle. Please use \thisrowno
                    die("Error: \thisrow{} detected - unable to parse. Please change LaTeX source to \thisrowno.");
                }
                my $xColStack=0;
                my $xOperator="+";
                my $xColTmp=$xCol[0];
                while($xColTmp=~/\\thisrowno\{(.*?)\}(.*)?/g){
                    my $columnIndex=$1;
                    my $additionalDirectives=$2;
                    $xColTmp=$additionalDirectives;
                    $_=~m/\s*(\S*)\s*(\S*)\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?/;
                    my %selectColumn = (
                        0 => $1,
                        1 => $2,
                        2 => $3,
                        3 => $4,
                        4 => $5,
                        5 => $6,
                        6 => $7,
                        7 => $8,
                        8 => $9,
                        9 => $10,
                        10 => $11,
                        11 => $12,
                        12 => $13,
                        13 => $14,
                        14 => $15
                    );
                    if($xOperator eq "+"){
                        $xColStack+=$selectColumn{$columnIndex};
                    }
                    else{
                        die("Unsupported operator - you have to implement it yourself. I only added \"+\".")
                    }
                    if($additionalDirectives=~/(.)?\d?\\thisrowno/){
                        $xOperator=$1;
                    }
                    elsif($additionalDirectives=~/(.)\s*?(\d*)/){
                        #die "[".$additionalDirectives."]";
                        #$xColStack=$xColStack;
                        die("There are some additional operations to be executed on the data, namely: $additionalDirectives \n Please use awk to format the data as this cannot be parsed. awk usage is as follows:\n gawk \"{\$1=\$1*1000;\$2=\\\"\\\";$\3=$\3*12e-3*1e-6/284;print}\" file.in > file.out");
                    }
                }
                #$addplot[$n].="(".$xColStack.",";
                print "(".$xColStack.",";
                my $yColStack=0;
                my $yOperator="+";
                my $yColTmp=$yCol[0];
                while($yColTmp=~/\\thisrowno\{(.*?)\}(.*)?/g){
                    my $columnIndex=$1;
                    my $additionalDirectives=$2;
                    print $2;
                    $yColTmp=$additionalDirectives;
                    $_=~m/\s*(\S*)\s*(\S*)\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?\s*(\S*)?/;
                    my %selectColumn = (
                        0 => $1,
                        1 => $2,
                        2 => $3,
                        3 => $4,
                        4 => $5,
                        5 => $6,
                        6 => $7,
                        7 => $8,
                        8 => $9,
                        9 => $10,
                        10 => $11,
                        11 => $12,
                        12 => $13,
                        13 => $14,
                        14 => $15
                    );
                    if($yOperator eq "+"){
                        $yColStack+=$selectColumn{$columnIndex};
                    }
                    else{
                        die("Unsupported operator - you have to implement it yourself. I only added \"+\".")
                    }
                    if($additionalDirectives=~/(.)?\d?\\thisrowno/){
                        $yOperator=$1;
                    }
                    elsif($additionalDirectives=~/(.)\s*?(\d*)/){
                        #die "[".$additionalDirectives."]";
                        #$xColStack=$xColStack;
                    }
                }
                #$addplot[$n].=$yColStack.")";
                print $yColStack.")";
            }
            #$addplot[$n].="};";
            print "};\n\n";
        close(FILE) or die("Error closing file: ".$DataFileName." ".$!);
        #$n++;
    }
    #$n=0;
    #while($textraw =~ /(\\addplot.*?)table\[.*?\]\n\s+\{.*?\}/sg){
    #   
    #   $n++;
    #}
}
else{print "Error: no input file given!\n\nUsage: $0 inputfile.\n";}

相关内容