Schrift
[thread]8350[/thread]

Latex parsen/bearbeiten mit Perl

Leser: 3


<< |< 1 2 >| >> 14 Einträge, 2 Seiten
McAldo
 2006-09-20 15:24
#70094 #70094
User since
2005-08-16
12 Artikel
BenutzerIn
[default_avatar]
Hallo

Ich möchte gerne Latexfiles für eine Erstbearbeitung durch ein Perlscript "jagen". Dabei sollen bestimmte Dinge im Text geändert/angepasst/korrigiert werden, welche ich beim Aufruf als Parameter mitgebe.

Gibt es fertige Module, welche das Latexfile parsen und bei denen man durch brachbare Parameter schon vieles erledigen kann?

McAldo
Taulmarill
 2006-09-20 15:43
#70095 #70095
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
wie währe es mit CPAN:LaTeX::Parser? ansonsten einfach mal auf http://search.cpan.org suchen.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Dubu
 2006-09-20 15:45
#70096 #70096
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Musst du wirklich LaTeX parsen, oder reicht dir vielleicht eines der zahlreichen Templating-Module?
McAldo
 2006-09-20 15:53
#70097 #70097
User since
2005-08-16
12 Artikel
BenutzerIn
[default_avatar]
Das Modul auf CPAN habe ich schon gefunden, nur weiß ich nicht, ob es den Ansprüchen genügt, da es nur 2 Optionen hat (wenn ich das richtig gelesen habe). Auch hatte ich mit meiner Frage gehofft, dass es jemanden gibt, der sowas vielleicht schon macht und/oder nützliche Tipps gibt.

Wie ich das File einlese ist eigentlich egal, hauptsache es funktioniert und ich muß nicht alles neu programmieren (das Rad neu erfinden :-) ).

Wie gesagt, es geht darum, sich wiederholende Textstellen zu bearbeiten.

Z.B. im Text steht das Wort "klein" und dieses soll durch "\textbf{klein}" ersetzt werden. Das wäre nun eine einfache Geaschichte, es sind dann noch kompliziertere Teile dabei, aber als Beispiel sollte es genügen.

McAldo
Ishka
 2006-09-20 16:02
#70098 #70098
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
So einfache Dinge kannst du auch mit Regulären Ausdrücken erledigen

Code: (dl )
$inhalt=~s/\bklein\b/\\textbf{klein}/g;
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
renee
 2006-09-20 16:23
#70099 #70099
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Nur bedingt. Wenn nämlich ein Teil schon formatiert ist, dann wird es nochmal formatiert:
Code: (dl )
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl

use strict;
use warnings;

my $string = '\textbf{klein}';
$string =~ s/\bklein\b/\\textbf{klein}/g;

print $string;


Ausgabe:
Code: (dl )
1
2
~/entwicklung 295> perl latex.pl 
\textbf{\textbf{klein}}


edit: besser wäre da:
Code: (dl )
$string =~ s/\bklein(?!})\b/\\textbf{klein}/g;


Wobei das vermutlich auch einige Sachen nicht berücksichtigt.\n\n

<!--EDIT|renee|1158755200-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2006-09-20 16:35
#70100 #70100
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
Woher kommen denn die zu bearbeitenden LaTeX-Dateien? Sind die maschinell erzeugt? Oder von Menschen?
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
McAldo
 2006-09-20 19:51
#70101 #70101
User since
2005-08-16
12 Artikel
BenutzerIn
[default_avatar]
Das mit den regulären Ausdrücken ist mir bewußt, ich suche nach einem einfacheren Weg, um nicht für jeden Fall ein RegEx basteln zu müssen. :-) Wahrscheinlich bleibt mir aber nichts anderes übrig. :-(

Die Tex-Files sind maschinel aus Vorlagen erstellt. Zum Teil aus Word, OpenOffice, oder anderen Schreibprogrammen. Manche wurden aber schon mit Latexeditioren erstellt und benötigen nur etwas Anpassung.

McAldo
McAldo
 2006-09-21 11:35
#70102 #70102
User since
2005-08-16
12 Artikel
BenutzerIn
[default_avatar]
Ich habe nun mal das Modul LaTeX::Parser installiert und wollte damit ein tex-File parsen. Und gleich kommt ein Fehler:

Code: (dl )
A \ Command I don't understand at /home/user/perllib/lib/site_perl/5.6.1//LaTeX/Parser.pm line 115.


Jemand eine Idee, wie ich das behebe?

McAldo
docsnyder
 2006-09-21 12:01
#70103 #70103
User since
2005-09-08
300 Artikel
BenutzerIn
[Homepage] [default_avatar]
Sagt er auch, welches "/"-Makro er nicht versteht?
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2006-09-20 15:24.