在复杂的项目中,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;
}