I am reading Think Perl 6 by Laurent Rosenfeld, with Allen B. Downey recently which is a very good reading.
It has its .tex files available in github here.
It has code examples like this:
I believe it would be very useful to have the code blocks colored like this:
For this to happen we have to batch process all .tex files contained in the repository above. For this to happen we have to convert the latex code:
\begin{verbatim}
say 42 == 42; # True
say 42 == 42.0; # True
say 42 === 42; # True
say 42 === 42.0; # False
\end{verbatim}
\begin{verbatim}
$x eq $y # $x is string-wise equal to $y
$x ne $y # $x is string-wise not equal to $y
$x gt $y # $x is greater than $y (alphabetically after)
$x lt $y # $x is less than $y (alphabetically before)
$x ge $y # $x is greater than or equal to $y
$x le $y # $x is less than or equal to $y
$x eqv $y # $x is truly equivalent to $y
\end{verbatim}
TO
\begin{minted}{perl6}
say 42 == 42; # True
say 42 == 42.0; # True
say 42 === 42; # True
say 42 === 42.0; # False
\end{minted}
\begin{minted}{perl6}
$x eq $y # $x is string-wise equal to $y
$x ne $y # $x is string-wise not equal to $y
$x gt $y # $x is greater than $y (alphabetically after)
$x lt $y # $x is less than $y (alphabetically before)
$x ge $y # $x is greater than or equal to $y
$x le $y # $x is less than or equal to $y
$x eqv $y # $x is truly equivalent to $y
\end{minted}
I want to accomplish this with Perl 6. Here is how I plan to do.
THIS IS DUMMY CODE
# First I want to skim all the .tex files in the cloned repo (with git)
for dir("ThinkPerl6/book") ->$file {
say $file if $file~~/\.tex/;
}
# Read each .tex file and modify, replace `\begin{verbatim}` with `\begin{minted}{perl6}`
for "$file.tex".IO.lines -> $line {
substitute with "\begin{minted}{perl6}" if $line ~~/\\begin\{verbatim\}/;
}
# Read each .tex file and modify, replace `\end{verbatim}` with `\end{minted}`
for "$file.tex".IO.lines -> $line {
substitute with "\end{minted}" if $line ~~/\\end\{verbatim\}/;
}
I could not go beyond that. Any help? Use of regexp would be very helpful.
Best regards,
Suman
You need to do the following steps:
.new
added or so).new
to override the original file. See this example for inspiration.I hope this helps.
Here is one implementation of moritz's first two bullet points.
my $fh-out = open "$file.new.tex", :w; # Create a new file
# Read in old file, line by line
for "$file.tex".IO.lines -> $line is copy {
# Make changes, if needed
$line.=subst('\begin\{verbatim\}','\begin{minted}{perl6}');
$line.=subst('\end\{verbatim\}','\end{minted}');
# Print line to new file
$fh-out.put: $line;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With