2014-04-29 5 views
0

Texinfo 매뉴얼을 작성 중이며, HTML의 경우 다른 파일의 내용을 HTML 출력의 <head> ... </head> 섹션에 포함시켜야합니다. 더 구체적으로 표현식을 멋지게 보여주기 위해 HTML 버전의 출력에 mathjax 기능을 추가하고 싶습니다. 하지만 헤더에 <script>...</script>을 추가하는 방법을 찾지 못했습니다!texinfo는 파일의 HTML 헤더를 포함합니다.

답변

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으로 쉽게 컴파일 할 수 있습니다.

그런 다음 우리는 쉽게 HTML 파일로 컴파일 된 프로그램을 (기본적으로는 a.out라고한다) 넣어 실행할 수 있습니다

$ a.out *.html 

당신은 당신이 원하는 텍스트 매크로를 변경할 수 있습니다.

+0

미래의 메모 : cdn.mathjax.org의 수명이 다해 가고 있습니다. https://www.mathjax.org/cdn-shutting-down에서 마이그레이션 팁을 확인하십시오. (향후 독자를 위해 게시물을 업데이트 할 수도 있습니다.)). –

+0

과거에서 왔을 수 있었던 미래의 메모 : 간단한 sed 명령을 사용하여 동일한 것을 달성 할 수 있습니다. 'JS_URL = http : //example.com/my.js sed -i 's | | \ \ 0 | ' 내 파일 _ * .html' – erjoalgo

관련 문제