
原文は下記
編集: グーグル検索とここからの助けで解決しました。私の考えはこうです: タイプミスが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」の後にクラッシュします。これが問題のようですが、原因がわかりません。さらに、ループはまったく機能しません。どのような種類のループ ( loop
、whiledo
、for
) を設定しても、ループは 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