我正在编写 Texinfo 手册,对于它的 HTML,我需要将另一个文件的内容包含到<head> ... </head>
HTML 输出部分。更具体地说,我想在输出的 HTML 版本中添加mathjax功能,以很好地显示方程式。但我似乎找不到如何将其添加<script>...</script>
到标题中!
问问题
112 次
1 回答
0
由于我找不到答案,而且我自己的工作似乎并不难,所以我编写了一个小型 C 程序来为我完成这项工作。在我的情况下,它完美地完成了这项工作!
当然,如果 Texinfo 中有一个选项可以完成这项工作,那将是一个正确的答案,这只是让我自己暂时解决问题的一种补救措施。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ADDTOHEADER " \n\
<script type=\"text/javascript\" \n\
src=\"http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML\">\n\
</head>"
void
addtexttohtml(char *filename)
{
char toadd[]=ADDTOHEADER;
size_t len=0;
ssize_t read;
FILE *in, *out;
char tmpname[]="tmp457204598345.html", *line=NULL;
in=fopen(filename, "r");
out=fopen(tmpname, "w");
if (in == NULL) exit(EXIT_FAILURE);
if (out == NULL) exit(EXIT_FAILURE);
while ((read = getline(&line, &len, in)) != -1)
{
if(strcmp(line, "</head>\n")==0) break;
fprintf(out, "%s", line);
}
fprintf(out, "%s", toadd);
while ((read = getline(&line, &len, in)) != -1)
fprintf(out, "%s", line);
if(line)
free(line);
fclose(in);
fclose(out);
rename(tmpname, filename);
}
int
main(int argc, char *argv[])
{
int i;
for(i=1;i<argc;i++)
addtexttohtml(argv[i]);
return 0;
}
这个程序可以很容易地用$ gcc addtoheader.c
.
然后我们可以轻松地将编译后的程序(默认情况下应该调用它a.out
)与 HTML 文件一起运行:
$ a.out *.html
您可以更改任何您想要的文本的宏。
于 2014-04-29T09:01:41.757 回答