%EC%9D%98%20%ED%8A%B9%EC%88%98%20%EC%97%B4%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B0%80%20%ED%8F%AC%ED%95%A8%EB%90%9C%20PDF%20%2B%20%EA%B7%B8%EB%A6%BC.png)
저는 tex를 처음 접했지만 이제 다음을 수행해야 합니다.
- 동일한 레이아웃으로 여러 PDF를 컴파일(물리적으로 다른 파일로 분리되거나 한 파일의 페이지로 분리된 경우에는 그다지 중요하지 않음)
- 테이블 기반 데이터베이스의 데이터 1열에서(현재 열이 있는 Excel 시트: 영어 + 독일어, 정의 포함, + 그림) (데이터는 다른 사람에 의해 채워지고 가끔씩 변경됩니다)
- 그리고사진으로 연결(본문에 설명된 내용 중 두 열 모두 세 번째 열에 동일한 그림이 있음)
여기에서 질문을 검색하면서 .csv 파일, photon 및 luatex를 사용하는 몇 가지 솔루션을 찾았습니다(예:스프레드시트의 데이터를 Latex로 가져오고 LaTeX의 각 행에 대해 여러 PDF 파일을 만듭니다. ) - 내가 들어본 적이 없는 모든 것들 ;) 하지만 나는 기꺼이 배울 의향이 있습니다. 그리고 필요하다면 그 문제를 해결하겠습니다. 문제는 이제 어디서부터 시작해야 할지 모르겠다는 것입니다. 게다가 Excel의 셀에 그림이 포함되지 않아 어떤 식으로든 읽을 수 없기 때문에 그림이 문제가 될 것이라는 느낌이 듭니다. 그래서 처음에는 테이블에 완전히 다른 도구를 사용해야 할 것 같습니다. 그리고 어쨌든 완전히 다른 방법이 있을 것입니다.
내 질문은 다음과 같습니다.
- 테이블을 생성하는 데 어떤 프로그램을 사용해야 합니까? (다른 사람이 그렇게 할 것이므로 복잡하거나 비용이 많이 들지 않아야 합니다. 가능하다면 Excel처럼 쉽고 일반적인 것이 좋을 것입니다.)
- 그리고 라텍스로 가져오기 시작하는 방법은 물론입니다. 이미 주어진 답변을 다시 제공할 필요는 없습니다. 여기에 이미 존재하는 질문과 답변을 기꺼이 읽어보고 싶지만 너무 많고 지식이 제한되어 있습니다. 그것에 대해 주어진 답변 중 어떤 것을 시도할지 힌트를 얻는 것이 좋을 것입니다.
- .tex 파일에서 최종 PDF의 레이아웃을 변경하는 것은 여전히 가능하지만 모든 솔루션에서 작동할 것 같습니다.
여기 PDF 중 하나가 마지막에 어떻게 보일지 스케치합니다.
예제 테이블:
나는 내 문제를 분명히 할 수 있기를 바랍니다. 도와 주셔서 정말로 고맙습니다!
답변1
datatool 패키지를 사용하여 솔루션을 찾았습니다. 아직 완벽하지는 않지만 개선을 위한 아이디어가 있으신가요?
사진은 다 폴더에 담아서 사용하고 있어요
ls /b *.jpeg >pix.csv
모든 사진의 .csv를 생성합니다. (맥에서 작업 중)
그런 다음 해당 항목과 사용하려는 열(.csv로 저장하기 전)을 .tex에 로드하고 병합합니다.
마지막으로 각 행에 대해 tikzpicture를 실행하여 단일 카드를 생성했습니다.
\documentclass{standalone}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{datatool}
\DTLloaddb[
noheader,
keys={name}
]{pix}{pix.csv}
\DTLloaddb[
noheader,
keys={title}
]{text}{text.csv}
\begin{document}
\newcount\rowIdx
\dtlforcolumn{\secondC}{text}{title}%\dtlforcolumn{?cs?}{?db?}{?key?}{?body?}
{
% iterate through each entry in the `title' column of the text database
\advance\rowIdx by 1\relax
% get corresponding row of pix database
\dtlgetrow{pix}{\rowIdx}%
% append to current row (this new column is assigned the key `title')
\dtlappendentrytocurrentrow{title}{\secondC}%\dtlappendentrytocurrentrow{?key?}{?value?}
% update first database
\dtlrecombine
}
\DTLforeach*%\DTLforeach*[?condition?]{?db name?}{?assign list?}{?text?}
[\not\DTLiseq{\Name}{main.tex}]
{pix}{\Name=name,\Title=title}{
\newpage
\begin{tikzpicture}[remember picture,overlay]
\node[anchor=south,inner sep=0pt] (icon) at (7.4,-8.5){\includegraphics[height=5cm]{\Name}}; %inserting the picture according to name
\node[inner sep=0,text width=\paperwidth,align=flush center] (text) at (7.4,-9){\Title};
\end{tikzpicture}
}
\end{document}
몇 가지 오류가 있습니다. \end{tikzpicture} 줄에 \endgroup이 누락되고 }가 있는데 결국에는 많은 }가 있다고 하는데 왜 그런지 이해가 안 됩니까? 그리고 .tex에 \endgroup을 쓰면 너무 많다고 나옵니다. 누락된 부분이 자동으로 추가되므로 이렇게 작동하지만 변경 사항을 적용하려면 항상 Enter 키를 눌러야 합니다. 아마도 여러분 중 한 명이 여기서 도움을 줄 수 있을 것입니다.
정말 감사합니다!
답변2
위의 답변은 하나의 언어에서만 잘 작동하지만 여기서는 질문 및 레벨 옵션에서 요청한 것과 같은 두 가지 언어(자막 포함)에 대한 솔루션입니다. 테이블을 만드는 사람이 그림을 넣는 대신 마지막 열에 그림의 파일 이름을 적어야 정상적으로 작동합니다.
\documentclass[english]{article}
\usepackage[paperwidth=11cm, paperheight=10.4cm]{geometry}
\usepackage{graphicx}
\usepackage{tikz}
\graphicspath{{../pix/}}
\usepackage{datatool}
\usepackage{etoolbox}
\newbool{GER}
%\booltrue{GER} % if german version activate
\newcommand{\Levelgew}{1} % say which level (if you say level 2 it will print level1+2)
\DTLsetseparator{;}
\DTLloaddb[keys={level,eng,engunderline,ger,gerunderline,name}]{cards}{_scrumflowcards.csv} %\DTLloadrawdb[?options?]{?db name?}{?filename?}
\begin{document}
\ifbool{GER}
{
\DTLforeach*%\DTLforeach*[?condition?]{?db name?}{?assign list?}{?text?}
[\not\DTLisgt{\Level}{\Levelgew}]
{cards}{\Level=level,\Title=ger,\Underline=gerunderline,\Name=name}
{
\clearpage%start a new page for each row
\thispagestyle{empty}%get rid of the pagenumbers
\begin{tikzpicture}[remember picture,overlay]
\node[yshift=-2.2cm,anchor=south] (icon) at (current page.center) {\includegraphics[height=6cm]{\Name}};
\node[yshift=-3.5cm,text width=8cm,align=flush center] (text) at (current page.center){\huge\bfseries\sffamily\Title\\[15pt]
\LARGE \Underline};
\end{tikzpicture}
}
}{
\DTLforeach*%\DTLforeach*[?condition?]{?db name?}{?assign list?}{?text?}
[\not\DTLisgt{\Level}{\Levelgew}]
{cards}{\Level=level,\Title=eng,\Underline=engunderline,\Name=name}
{
\clearpage%start a new page for each row
\thispagestyle{empty}%get rid of the pagenumbers
\begin{tikzpicture}[remember picture,overlay]
\node[yshift=-2.2cm,anchor=south] (icon) at (current page.center) {\includegraphics[height=6cm]{\Name}};
\node[yshift=-3.5cm,text width=8cm,align=flush center] (text) at (current page.center){\huge\bfseries\sffamily\Title\\[15pt]
\LARGE \Underline};
\end{tikzpicture}
}
}
\end{document}
마지막에는 pgfpackage(\pgfpagesphysicalpageoptions 및 \pgfpageslogicalpageoptions)를 사용하여 하나의 a4 용지/시트에 여러 개의 카드/페이지를 인쇄했습니다.