texinfo包含来自文件的HTML标头

时间:2014-04-29 06:49:47

标签: html texinfo

我正在编写Texinfo手册,对于HTML,我需要将另一个文件的内容包含在HTML输出的<head> ... </head>部分中。更具体地说,我想在输出的HTML版本中添加mathjax功能,以便很好地显示方程式。但我似乎无法找到如何将其<script>...</script>添加到标题中!

1 个答案:

答案 0 :(得分: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

您只需更改所需文字的宏。