我想要:
逐行读取文本文件。
以mwe给出的结构。
存储在数组中,并按其列之一对其进行排序。
排序的数组应该在perltex中正常显示在Latex文件中。
远离这个目标,我为从Perl变量传递到乳胶输出而苦恼。
我在docs和net中没有找到类似的代码。另外,这里还缺少“ perltex”标签,但是我希望有人可以提供帮助。
\documentclass[]{scrartcl}
\usepackage{perltex}
% content of text file "verfile" in same dir
% die & Vers\"ohnung & tr. & vers\"ohnen & in alle R. gehend & fehlt \\
% die & Vergoldung & tr. & vergolden & in alle R. gehend & fehlt \\
% die & Vergeudung & tr. & vergeuden & in alle R. gehend & fehlt \\
\begin{document}
\perlnewcommand{\setline}[1]{$line = $_[0]; return ""} %cp perltex doc p.5
\perlnewcommand{\getline}{$line;}
\perldo{
$verfile = "verfile";
open (VF,"$verfile") || die "$!";
while (<VF>) {
$line = $_; # works: print "$line\n";
}
print "after loop: $line\n";
return "\\setline{$line}";
}
\getline
\end{document}
目前,我期望在输出pdf文件中仅缺少一行可以完成数组工作。因此问题仍然存在,为什么setline不起作用?
这里是如何创建表格的示例。这将根据第一列的内容对verfile
的列进行排序,然后创建一个LaTeX表:
\documentclass{article}
\usepackage{perltex}
\begin{document}
\perlnewcommand{\verfile}[0]{
open (my $VF, '<', 'verfile') or die "$!";
my @lines;
while (my $line = <$VF>) {
chomp $line;
my @fields = split /&/, $line;
push @lines, \@fields;
}
close $VF;
my @sorted = sort {$a->[0] cmp $b->[0]} @lines;
my $result = '
\begin{table}
\centering
\begin{tabular}{cccccc}
';
for my $line (@sorted) {
$result .= (join ' & ', @$line) . "\n";
}
$result .= '\end{tabular}
\end{table}
';
return $result;
} % done
\verfile
\end{document}
使用perltex --nosafe test.tex
编译该文件