App-zen
view release on metacpan or search on metacpan
my $short_title = latex_escape($section->{heading})
. ($section->{max_line_id} > 1 ?
"{\\tiny \[".($section->{max_line_id} - 1)."]}"
: '');
print "\\$level_name", "[$short_title]{",
latex_escape($section->{heading}),
($section->{pattern} ?
' \\hfill{\\footnotesize \\texttt{['
. latex_escape($section->{pattern})
. ']}~\\emph{'
. join(',', @params)
. '}}'
: ''),
"} \\label{$id}\n";
}
my @lines = @{$section->{lines}};
shift @lines;
while (@lines > 0) {
my $l = shift @lines;
my $t = $l->{text};
if ($l->{begin_block}) {
if ($l->{begin_block}->{type} eq 'table') {
my $blk = $l->{begin_block};
my @rows = @{$blk->{rows}};
print "\\begin{tabular}";
print "{|", join("|", ('c') x scalar(@{$rows[0]})), "|}\n\\hline\n";
if ($blk->{has_headers}) {
my $headers = shift @rows;
print join("&",@{$headers});
print " \\\\\n\\hline\n\\hline\n";
}
for (@rows) {
my $a = shift @rows;
print join("&",@{$a});
print " \\\\\n\\hline\n";
}
print "\\end{tabular}\n";
while (@lines > 0) {
$l = shift @lines;
last if $l->{end_block};
}
} else {
my $firstnum = ($num_listings == 0 ? 1 : 'last');
my $caption = $l->{begin_block}->{name};
my $lang = $l->{begin_block}->{lang};
$lang = undef unless exists $latex_listing_supported_languages{$lang};
if ($l->{begin_block}->{name}) {
my $name = $l->{begin_block}->{name};
print "\\vskip 0.5em \\noindent ";
if ($name =~ m/^\+\[?([^]]*)/) {
my $sec = find_section($1);
my $caption = $sec->{heading};
print '$[\\![$\\textbf{', latex_escape($caption), '}$]\\!] +\\!\\!\\equiv$';
} elsif ($name =~ m/^>(.*)/) {
print '$\\langle$\\textbf{',latex_escape($1), '}$\\rangle\\equiv$';
} else {
print "\\{\\textbf{",latex_escape($name),'}\\}$\\equiv$';
}
}
my $options = "firstnumber=$firstnum";
$options .= ",language=$lang" if $lang;
print "\\begin{lstlisting}[$options]\n";
$num_listings++;
while (@lines > 0) {
$l = shift @lines;
$t = $l->{text};
my $label;
last if $l->{end_block};
if ($t =~ m/$re_ln_label/) {
$t = $`;
$label = $1;
}
if ($t =~ m/^(\s*)\[\[(.*)]]\s*$/) {
my $spaces = $1;
my @names = split /;/, $2;
print $spaces, "/*", '!$[\\![$';
my $n = 0;
foreach (@names) {
$n++;
my ($name, $params) = split /:/,trim($_);
my $section = find_section($name);
my $id = $section->{id};
if ($section->{pattern} && !$params && @{$section->{params}} > 0) {
my $pat = $section->{pattern};
my @vals = ($name =~ /^$pat$/g);
$params = join(',', @vals);
}
if ($params) {
$params = "{(" . latex_escape($params) . ")}";
}
print "; " if $n > 1;
if (scalar(@names)==1) {
print "\\textrm{{",latex_escape($section->{heading}),"}}$params",
" {\\scriptsize \\pageref{$id}}";
} else {
$name = latex_escape($name);
print "\\textrm{{$name}}$params {\\scriptsize \\pageref{$id}}";
}
}
print '$]\\!]$', "!*/";
} elsif($t =~ m/^(\s*)\.label\s+(.*)/) {
my $name = $2;
my $lab = find_label($name, $section);
print '/*',"!\\label{$lab->{id}}!*/";
} elsif($t =~ m/^(\s*)`([`.[].*)/) {
print $1,$2;
} else {
print $t;
}
if ($label) {
my $lab = find_label($label, $section);
print '/*',"!\\label{$lab->{id}}!*/";
}
print "\n";
}
print "\\end","{lstlisting}\n";
}
} elsif ($t =~ m/^(```+)(\w+)?\s+%(.*)/) {
my $backticks = $1;
my $lang = $2;
my $cmd = $3;
my @a = ();
while (@lines > 0) {
my $l = shift @lines;
last if ($l->{text} =~ m/^$backticks\s*$/);
push @a, expand1($l);
}
my $src = join("\n", map {$_->{text}} xtrim(@a));
my $input_file;
my $output_file;
my $dir = 'tmp';
if ( !-d $dir) {
make_path $dir or die "Failed to create path: $dir";
}
( run in 1.084 second using v1.01-cache-2.11-cpan-302cb4679cc )