Perltex: как вывести в латекс-файл? - PullRequest
2 голосов
/ 25 октября 2019

Я хочу:

  • Читать текстовый файл построчно.

  • Структура дана в мв.

  • Сохранение в массиве и сортировка по одному из его столбцов.

  • Сортированный массив должен отображаться в латексном файле как обычно для perltex.

Вдали от этой цели, я борюсь с передачей из Perlпеременные для вывода латекса.

Я не нашел аналогового кода в документах и ​​сети. Также здесь отсутствует тег «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 не работает?

1 Ответ

2 голосов
/ 25 октября 2019

Вот пример того, как вы можете создать таблицу. Это сортирует столбцы 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...