一括送信、「ループ」が機能しない、「読み取り」が機能しない

一括送信、「ループ」が機能しない、「読み取り」が機能しない

原文は下記

編集: グーグル検索とここからの助けで解決しました。私の考えはこうです: タイプミスがexpandafter失敗の原因となり、コマンドと前のループの切り詰められた行の残りの部分との間に不一致が生じましたchopline。もう 1 つのエラーは でしたifeof。Latex は の 1 行後に読み込もうとしましたeof。これにより、「read to」が失敗しました。

動作コード:

csvの形式は

academicTitle(might be empty);surname;prename;Street+Number;ZIP-code;city;addressExtension;postbox(0 or certainValue)\n

ファイルはここから始まります:

\documentclass[12pt,a4paper,landscape]{article}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage{graphicx}
\usepackage[verbose]{placeins}


%What do we do? Delete all the margins!!! How do we do it? By force!!!
\setlength{\leftmargin}{0pt}
\setlength{\rightmargin}{0pt}
\setlength{\topmargin}{0pt}
\setlength{\textheight}{845pt}
\setlength{\hoffset}{-3.3in}
\setlength{\voffset}{-1.5in}
\setlength{\textheight}{845pt}
\setlength{\textwidth}{597pt}


%Personal chopline command from https://de.wikibooks.org/wiki/LaTeX-W%C3%B6rterbuch:_Serienbrief_mit_externen_Daten
\def\chopline#1;#2;#3;#4;#5;#6;#7;#8 \\{
\def\Titel{#1}
\def\Name{#2}
\def\Vorname{#3}
\def\Strasse{#4}
\def\PLZ{#5}
\def\Ort{#6}
\def\Adresszusatz{#7}
\def\Postfach{#8}
}

\newif\ifmore \moretrue



\begin{document}
\pagenumbering{gobble}

\newread\quelle
\openin\quelle=Adressen.csv %Here we get the addresses from

\loop

\read\quelle to\zeile
\ifeof\quelle
\global\morefalse
\else{

%write you stuff here

\newpage %gets ignored on first page


\expandafter\chopline\zeile\\
\vspace*{-0.02\paperwidth} %due to my Brief.pdf
\hspace*{0.0\paperheight}  %same here
\includegraphics[width=\paperwidth]{./Brief.pdf}

\FloatBarrier
\vspace*{-0.23\paperheight} %shift the box where desired
\hspace*{0.65\paperwidth}   %same here
\parbox{0.4\textwidth}{
\Titel \ \Vorname \ \Name \ \\
\ifx\Adresszusatz\empty %if it isn't empty, it is printed
\else
\Adresszusatz \\
\fi
\ifnum\Postfach=0 %if the value is 0 in the .csv, it isn't printed
\else
Postfach \ \Postfach
\fi
\Strasse \ \\
\PLZ \ \Ort
}

%stop with you writing here

}
\fi

\ifmore\repeat

\closein\quelle


\end{document}

元の質問:

これは私の最初の質問です。私はたくさんグーグルで検索しましたが、まだ成功していません。

私は手紙の封筒の自動生成器を作りました。これはcsvファイルから読み込みます。私はde.wikibooks シリーズブリーフしかし残念ながらそれは機能しません。

私は Windows 7 で Texmaker と MikTex を使用していますが、必要に応じて Manjaro に変更することもできます。

これが私のコードです:

Former code

「read to」の後にクラッシュします。これが問題のようですが、原因がわかりません。さらに、ループはまったく機能しません。どのような種類のループ ( loopwhiledofor) を設定しても、ループは 1 回しか実行されません。for ループを 30 回繰り返しに設定しても、実際には 30 フレームが生成されるはずです。

封筒にビーマーを使うことについて私を批判しないでください。もっとタグを付けたいのですが、それは許可されていません。

答え1

おそらく最善の方法ではないが、ある程度「フェイルセーフ」なのは、ファイルを 1 行ずつ読み取り、入力行を処理するexpl3機能とコマンドを使用することです。\ior_map_inline

シーケンスを使用して、行をいくつかの関連する部分に分割しました。

空白はfoo\ some other stuff!で入力する必要があることに注意してください。

\documentclass[12pt,a4paper]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
%\usepackage{amsmath}
%\usepackage{amsfonts}
%\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{forloop}

\usepackage{xparse}

\begin{document}



\ExplSyntaxOn
\int_const:Nn \c_maestro_titel_int {1}
\int_const:Nn \c_maestro_vorname_int {2}
\int_const:Nn \c_maestro_name_int {3}
\int_const:Nn \c_maestro_strasse_int {4}
\int_const:Nn \c_maestro_plz_int {5}
\int_const:Nn \c_maestro_ort_int {6}
\int_const:Nn \c_maestro_zusatz_int {7}
\int_const:Nn \c_maestro_postfach_int {8}


\ior_new:N \l_maestro_quelle_stream

\ior_open:Nn  \l_maestro_quelle_stream  {Adressen.csv}

\ior_map_inline:Nn \l_maestro_quelle_stream {%
  \seq_set_split:Nnn \l_tmpa_seq {;} {#1}% Split the sequence
  \begin{frame}
    \includegraphics[scale=0.2]{beeduck.jpg}\par

%    \vspace{0.6\paperheight}
%    \hspace{0.6\paperheight}????
    \seq_item:Nn \l_tmpa_seq {\c_maestro_titel_int}~\seq_item:Nn \l_tmpa_seq {\c_maestro_vorname_int}~\seq_item:Nn \l_tmpa_seq {\c_maestro_name_int}\par
    \tl_set:Nx \l_tmpa_tl {\seq_item:Nn \l_tmpa_seq {\c_maestro_zusatz_int}}
    \tl_if_empty:NF \l_tmpa_tl {%
      \tl_use:N \l_tmpa_tl\par
    }
    \tl_set:Nx \l_tmpa_tl {\seq_item:Nn \l_tmpa_seq {\c_maestro_postfach_int}}
    \tl_if_empty:NF \l_tmpa_tl {%
      Postfach~\tl_use:N \l_tmpa_tl\par
    }
    \seq_item:Nn \l_tmpa_seq {\c_maestro_strasse_int}\par
    \seq_item:Nn \l_tmpa_seq {\c_maestro_plz_int}~\seq_item:Nn \l_tmpa_seq {\c_maestro_ort_int}
  \end{frame}
}
\ExplSyntaxOff


\end{document}

そしてAdressen.csvここにあります:

;Gandalf;Stormcrow;Shireroad;10000;Shire;bei\ Schmidt;11111
;Baggins;Bilbo;Shireroad;10000;Shire;bei\ Müller;22222
Dwarf-King;Thorin;Oak-Shield;Erebor\ Road;Middle\ Earth;Arkenstone;at\ Smaug's\ cave;33333

ここに画像の説明を入力してください

関連情報