대량 문자, "루프"가 작동하지 않음, "읽기"가 작동하지 않음

대량 문자, "루프"가 작동하지 않음, "읽기"가 작동하지 않음

아래 원문

편집: 여기에서 끝없는 구글링과 도움으로 문제를 해결했습니다. 내 이론은 다음과 같습니다. 오타로 인해 실패하여 명령과 이전 루프의 나머지 잘린 줄 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 시리즈 요약. 그러나 불행하게도 그것은 작동하지 않습니다.

저는 Windows 7에서 Texmaker와 MikTex를 사용하고 있지만 필요한 경우 Manjaro로 변경할 수 있습니다.

이것은 내 코드입니다.

Former code

"읽기" 후에 충돌이 발생합니다. 이것이 문제인 것 같지만 이유를 알 수 없습니다. 게다가 루프는 어떤 방식으로도 작동하지 않습니다. 어떤 종류의 루프( loop, whiledo, for)를 설정해도 한 번만 루프됩니다. for-loop를 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

여기에 이미지 설명을 입력하세요

관련 정보