有没有办法强制缩进 .log 文件?或者有脚本进行后期处理?

有没有办法强制缩进 .log 文件?或者有脚本进行后期处理?

在复杂的项目中,TeX 通常会处理许多不同的包含文件。在文件中.log,文件包含用 表示(<filename> ... )。如果这样的节很长,并且可能嵌套,则不容易看出给定日志条目周围有哪些文件包含。缩进可以以优雅而标准的方式解决这个问题。

有没有办法在 TeX 的日志文件中强制缩进?或者有人写过脚本来根据嵌套的(...)节对日志文件进行后处理吗?

答案1

这个简单的代码对我有用。

#include<string.h>
#include<iostream>
#include <fstream>
using namespace std;

int main(int argc, char *argv[]){
    const char* outFile="indented.log";
    const char *pad="\t", *inFile;

    if(argc==3){
        inFile=argv[1];
        outFile=argv[2];
    }
    else if(argc==2)
        inFile=argv[1];
    else{
        cout<<"arg0: log file, arg1: optional outfile"<<endl;
        return 0;
    }

    char ch;
    ifstream fin(inFile, fstream::in);
    ofstream out (outFile);
    int lenpad = strlen(pad);

    int indent = -1; // Miss one indentaion
    while (fin >> noskipws >> ch) {
        out.put(ch);
        if(ch == '(')   indent++;
        else if(ch == ')')   indent--;
        else if(ch == '\n'){
            for(int j=0; j<indent; j++){
                for(int i=0; i<lenpad; i++){
                    out.put(pad[i]);
                }
            }
        }
    }
    fin.close();
    out.close();
    cout<<"Output written to file "<<outFile<<endl;
    return 0;
}

相关内容