
原文如下
編輯:我透過無休止的谷歌搜尋和這裡的幫助解決了這個問題。這是我的理論:拼字錯誤導致失敗,這導致命令與上一個循環的其餘截斷行expandafter
之間不匹配。chopline
另一個錯誤是ifeof
. Latex 嘗試讀取 後的一行eof
。這導致“讀取”失敗
工作代碼:
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 Serienbrief。但不幸的是它不會起作用。
我在 Windows 7 上使用 Texmaker 和 MikTex,但如果有必要,我可以更改為 Manjaro。
這是我的程式碼:
Former code
「讀到」後它崩潰了。這似乎是問題所在,但我不明白為什麼。此外,循環不起作用。無論我設定哪種循環(loop
、whiledo
、 ),它都只循環一次。for
即使我將 for 迴圈設為 30 次重複。實際上它應該產生 30 幀。
不要評判我使用投影機製作信封。我會提供更多標籤,但我不被允許這樣做。
答案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