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

📄 pre-process.pl

📁 柯老师网站上找到的
💻 PL
字号:
#!/usr/bin/perl -w# -*-	Mode:Perl; tab-width:8; indent-tabs-mode:t -*- ## pre-process.pl# Copyright (C) 1999 by USC/ISI# All rights reserved.                                            #                                                                # Redistribution and use in source and binary forms are permitted# provided that the above copyright notice and this paragraph are# duplicated in all such forms and that any documentation, advertising# materials, and other materials related to such distribution and use# acknowledge that the software was developed by the University of# Southern California, Information Sciences Institute.  The name of the# University may not be used to endorse or promote products derived from# this software without specific prior written permission.# # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.# # Contributed by Nader Salehi (USC/ISI), http://www.isi.edu/~salehi# die "usage: $0 working-directory\n" if ($#ARGV < 0);use IO::Handle;STDOUT->autoflush(1);foreach (@ARGV) {    if (-d $_) {	do_dir($_);    } elsif (-f $_) {	&pre_process_file($_);    };};exit 0;sub do_dir {    my($dir) = @_;    my($here) = `pwd`; chomp $here;    chdir ($dir) || die  "cannot chdir $dir\n";    foreach (<*.tex>) {	&pre_process_file($_);    };    chdir($here);};sub rewrite_code_line {    my($s) = @_;    my($qchars) = '{}';    die "need two quote chars\n" if (length($qchars) != 2);    my($dummy1, $qL, $dummy2, $qR) = split(/(.)/, $qchars);    my(@in) = split(/([\\$qchars])/, $s);    my(@out) = ();    my($in_code) = 0;    my($level, $i);    push(@out, '');    for ($level = $i = 0; $i <= $#in; $i++) {	if ($in[$i] eq '') {	    # do nothing for nothing	} elsif ($in[$i] eq "\\") {	    $out[$#out] .= $in[$i] . $in[$i+1];	    $i++;  # skip quoted piece	} elsif ($in[$i] eq $qL) {	    if ($level == 0) {		if ($out[$#out] =~ s/\\code$//) {		    die "$0: nested in-codes on line:\n\t$s\n" if ($in_code);		    $in_code = 1;		    push(@out, '{\tt ');		} else {		    $out[$#out] .= $in[$i];		    $in_code = 0;		};	    } else {	        $out[$#out] .= $in[$i];	    };	    $level++;	} elsif($in[$i] eq $qR) {	    $out[$#out] .= $in[$i];	    $level--;	    # die "$0: extra right-quotes on line:\n\t$s\n" if ($level < 0);	    if ($level == 0 && $in_code) {		$out[$#out] = &code_innards_rewrite($out[$#out]);		push(@out, '');		$in_code = 0;	    };	} else {	    $out[$#out] .= $in[$i];	};    };    die "$0: unterminated \\code{} on line:\n\t$s\n" if ($in_code);    return join('', @out);}sub code_innards_rewrite {    my($c) = @_;    # slashes for these things are optional in code    # first get rid of extra slashes    $c =~ s/(\\[_<>&\$])/$1/g;    # now put them back everywhere consistently    $c =~ s/([_<>&\$])/\\$1/g;    return $c;}sub pre_process_file{    local($filename) = @_;    $program_env = 0;    $change = 0;    print "$filename: ";    open(FILE, "$filename") || die "Cannot open $filename: $_";    $outFile = "$filename.new";    open(OUTFILE, ">$outFile") || die "Cannot create temp file $_";    while (<FILE>) {	if (/\\begin\s*{(program)}/) {	    $program_env = 1;	    $change = 1;	    s/$1/verbatim/g;	};	if ($program_env == 1) {	    s/\\;/\#/g;	    s/{\s*\\cf\s*(\#?.*)}/$1/g;	    s/\\([{|}])/$1/g;	    s/\\\*(.*)\*\//\/\*$1\//g;	    s/([<>_\$])/\\$1/g;	    if (/\\end\s*{(program)}/) {		$program_env = 0;		s/$1/verbatim/g;	    };	};	# Code is tricky because we have trouble matching paired {}'s	if (/\\code\{/) {	    $_ = rewrite_code_line($_);	};	# nader's old code handling:#	s/\\code{([^\$}]*)}/{\\ss $1}/g && ($change = 1);#	s/\\code{\s*\$([^}]*)}/{\\em $1}/g && ($change = 1);#	s/\\code{[^\w]*([^\$]*)([^}]*)}/{\\ss $1 $2}/g && s/\$/\\\$/g && ($change = 1);#	s/\\proc\[\]{([^}]*)}/{\\ss $1 }/g && ($change = 1);	print OUTFILE unless (/^%/);    };    close(OUTFILE);    close(FILE);    if ($change == 1) {	print " ALTERED\n";	rename($filename, "$filename.org");	rename($outFile, $filename);    } else {        print " unchanged\n";	unlink($outFile);    };}

⌨️ 快捷键说明

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