Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re^3: repetitive latex doc: in vim or perl?

by pc88mxer (Vicar)
on Jul 13, 2008 at 01:37 UTC ( [id://697283]=note: print w/replies, xml ) Need Help??


in reply to Re^2: repetitive latex doc: in vim or perl?
in thread repetitive latex doc: in vim or perl?

I'm glad you found a solution for this problem, especially since it uses perl. Here are just a few suggestions:

1) Since LaTeX has uses backslashes a lot, you can make it easier on yourself by using a 'here'-document with single quotes:

print <<'END'; \documentclass{article} \usepackage{graphicx} \usepackage{fullpage} \begin{document} END
2) Unfortunately, perl's own variable interpolation syntax is disabled when using here-documents within single quotes. On the other hand, writing your own mini-templating system is just a few lines in perl:
sub substitute_vars { my ($template, $hash) = @_; (my $out = $template) =~ s/\${([^}]+)}/$$hash{$1}/ge; $out; }
and here's how you could use it (write ${imfile} whenever you want to insert the value of imfile, etc.):
my $template = <<'TEMPLATE_END'; \section{${imfile}} \begin{figure}[!hbp] \centerline{\includegraphics[width=9cm, height=9cm]{ims/${imfile}_gd.p +ng}} \end{figure} \begin{figure}[!hbp] \centerline{\includegraphics[width=12cm, height=9cm]{${imfile}mfm.png} +} \end{figure} \newpage TEMPLATE_END for (@text) { chomp; print substitute_vars($template, { imfile => $_ } ); }
Of course, once your needs started to get more demanding, I'd consider using an existing templating system.

3) Finally, you can define your own macros in LaTeX with \newcommand. You might try something along the lines of this:

\newcommand{\insert_figures}[1]{ \section{#1} ... \centerline{\includegraphics[width=9cm, height=9cm]{ims/#1_gd.png}} ... \centerline{\includegraphics[width=12cm, height=9cm]{#1mfm.png}} ... \newpage }
However, if you have to manipulate the macro arguments, you might find using something you are familiar with (like perl) easier.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://697283]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others scrutinizing the Monastery: (5)
As of 2026-04-15 10:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.