⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000003.htm

📁 一份很好的linux入门资料
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;energy&nbsp;(长白山),&nbsp;信区:&nbsp;Linux&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;CJK+Hyperref中文目录的处理程序&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Wed&nbsp;Dec&nbsp;&nbsp;1&nbsp;01:11:17&nbsp;1999)&nbsp;<BR>&nbsp;<BR>该程序用于把pdflatex生成的*.out文件进行处理,&nbsp;从*.aux文件中读取目录文本,&nbsp;<BR>写入*.out文件中,&nbsp;并在头一行加上\let\WriteBookMarks\relax&nbsp;<BR>处理之后生成中间文件*.tmp,&nbsp;程序里用system的笨办法复制为*.out.&nbsp;<BR>命令行参数为要处理的文件名,&nbsp;注意别加扩展名.&nbsp;<BR>下面是源代码,&nbsp;请eggs等大虾试试.&nbsp;<BR>&nbsp;<BR>aux2out.c&nbsp;<BR>&nbsp;<BR>#include&nbsp;&lt;stdio.h&gt;&nbsp;<BR>#include&nbsp;&lt;string.h&gt;&nbsp;<BR>#include&nbsp;&lt;process.h&gt;&nbsp;<BR>&nbsp;<BR>void&nbsp;errmsg()&nbsp;<BR>{&nbsp;&nbsp;&nbsp;printf(&quot;File&nbsp;format&nbsp;not&nbsp;recognized\n&quot;);&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>int&nbsp;main(int&nbsp;argc,&nbsp;char&nbsp;*argv[])&nbsp;<BR>{&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;FILE&nbsp;*f_aux=0,&nbsp;*f_out=0,&nbsp;*f_tmp=0;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;aux_fname[256];&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;out_fname[256];&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;tmp_fname[256];&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;line[256],&nbsp;toc[256],&nbsp;buf[256];&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;*str1,*str2;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;n;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(argc!=2)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;printf(&quot;Usage:\n\t&nbsp;aux2out&nbsp;file&nbsp;\nNo&nbsp;file&nbsp;extention&nbsp;needed.\n&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;strcpy(aux_fname,argv[1]);&nbsp;&nbsp;&nbsp;&nbsp;strcat(aux_fname,&quot;.aux&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;strcpy(out_fname,argv[1]);&nbsp;&nbsp;&nbsp;&nbsp;strcat(out_fname,&quot;.out&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;strcpy(tmp_fname,argv[1]);&nbsp;&nbsp;&nbsp;&nbsp;strcat(tmp_fname,&quot;.tmp&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;f_aux&nbsp;=&nbsp;fopen(&nbsp;aux_fname,&nbsp;&quot;rt&quot;&nbsp;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(f_aux&nbsp;==&nbsp;NULL)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;printf(&quot;File&nbsp;%s&nbsp;not&nbsp;found\n&quot;,aux_fname);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;f_out&nbsp;=&nbsp;fopen(&nbsp;out_fname,&nbsp;&quot;rt&quot;&nbsp;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(f_aux&nbsp;==&nbsp;NULL)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;printf(&quot;File&nbsp;%s&nbsp;not&nbsp;found\n&quot;,out_fname);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;f_tmp&nbsp;=&nbsp;fopen(&nbsp;tmp_fname,&nbsp;&quot;wt&quot;&nbsp;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(f_aux&nbsp;==&nbsp;NULL)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;printf(&quot;File&nbsp;%s&nbsp;can't&nbsp;create\n&quot;,tmp_fname);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;fputs(&quot;\\let\\WriteBookMarks\\relax\n&quot;,f_tmp);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>loop:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/*read&nbsp;a&nbsp;line&nbsp;from&nbsp;AUX&nbsp;file*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;str1&nbsp;=&nbsp;fgets(&nbsp;line,&nbsp;256,&nbsp;f_aux);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(str1==NULL)&nbsp;goto&nbsp;over;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/*find&nbsp;a&nbsp;toc&nbsp;line*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(strstr(line,&quot;\\@writefile{toc}{\\contentsline&quot;)==NULL)&nbsp;goto&nbsp;loop;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/*find&nbsp;the&nbsp;start&nbsp;of&nbsp;toc:&nbsp;the&nbsp;3rd&nbsp;'}'&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(n=0;n&lt;3;n++)&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;str1&nbsp;=&nbsp;strstr(str1,&quot;}&quot;);&nbsp;str1++;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(str1==NULL){&nbsp;errmsg();&nbsp;return&nbsp;0;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/*find&nbsp;the&nbsp;end&nbsp;of&nbsp;toc:&nbsp;the&nbsp;next&nbsp;'}'*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;str2&nbsp;=&nbsp;strstr(str1,&quot;}&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(str2==NULL)&nbsp;{&nbsp;errmsg();&nbsp;return&nbsp;0;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/*get&nbsp;the&nbsp;toc&nbsp;string&nbsp;into&nbsp;str1,&nbsp;and&nbsp;save&nbsp;it*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;*str2=0;&nbsp;&nbsp;strcpy(toc,&nbsp;str1);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/*read&nbsp;line&nbsp;from&nbsp;the&nbsp;OUT&nbsp;file*/&nbsp;<BR>loop2:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;str1&nbsp;=&nbsp;fgets(&nbsp;line,&nbsp;256,&nbsp;f_out);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(str1==NULL)&nbsp;goto&nbsp;over;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/*find&nbsp;a&nbsp;toc&nbsp;line*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(strstr(line,&quot;\\BOOKMARK&quot;)==NULL)&nbsp;goto&nbsp;loop2;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/*find&nbsp;the&nbsp;start&nbsp;of&nbsp;toc:&nbsp;the&nbsp;first&nbsp;'}'&nbsp;*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;str1&nbsp;=&nbsp;strstr(str1,&quot;}&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(str1==NULL){&nbsp;errmsg();&nbsp;return&nbsp;0;&nbsp;}&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str1+=2;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/*find&nbsp;the&nbsp;rest&nbsp;of&nbsp;the&nbsp;toc.&nbsp;{}&nbsp;may&nbsp;not&nbsp;be&nbsp;empty*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;str2&nbsp;=&nbsp;strstr(str1,&quot;}&quot;);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(str2==NULL){&nbsp;errmsg();&nbsp;return&nbsp;0;&nbsp;}&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/*save&nbsp;the&nbsp;rest&nbsp;of&nbsp;line*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;strcpy(buf,&nbsp;str2);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/*insert&nbsp;toc*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;strcpy(str1,&nbsp;toc);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/*add&nbsp;the&nbsp;rest&nbsp;of&nbsp;line*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;strcat(line,buf);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;/*write&nbsp;to&nbsp;TMP&nbsp;file*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;fputs(line,f_tmp);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;goto&nbsp;loop;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>over:&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;fclose(f_aux);&nbsp;fclose(f_out);&nbsp;fclose(f_tmp);&nbsp;<BR>&nbsp;<BR>/*The&nbsp;follows&nbsp;is&nbsp;to&nbsp;rename&nbsp;TMP&nbsp;to&nbsp;OUT,&nbsp;and&nbsp;delete&nbsp;TMP*/&nbsp;<BR>/*May&nbsp;not&nbsp;work&nbsp;on&nbsp;Unix/Linux,&nbsp;modify&nbsp;if&nbsp;needed*/&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(line,&quot;copy&nbsp;%s&nbsp;%s&quot;,&nbsp;tmp_fname,&nbsp;out_fname);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;system(line);&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf(line,&quot;del&nbsp;%s&quot;,&nbsp;tmp_fname);&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;system(line);&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;&nbsp;<BR>}&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;bbs.net.tsinghua.edu.cn·[FROM:&nbsp;202.192.242.206]&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -