
私は TEX の初心者ですが、今、次のことを行う必要があります。
- 同じレイアウトで複数のPDFをコンパイルする(物理的に異なるファイルに分割されている場合や、1 つのファイル内のページとしてのみ分割されている場合はそれほど重要ではありません)
- テーブルベースのデータベースの1列のデータから(現時点では、英語 + ドイツ語の列、定義、画像を含む Excel シート) (データは他の誰かによって入力され、数か月ごとに変更されます)
- そして絵と関連した(テキストで説明されている内容なので、両方の列の3列目に同じ画像が表示されます)
ここでの質問を検索したところ、.csv ファイル、photon、luatex で動作するいくつかのソリューションが見つかりました (例:スプレッドシートからLaTeXにデータをインポートし、LaTeXの各行に複数のPDFファイルを作成します。 ) - どれも聞いたことのないものですが、学ぶつもりです。必要に応じて、それらに取り組みます。問題は、どこから始めればよいかわからないことです。さらに、Excel のセルに画像が含まれていないため、画像が問題になるのではないかという気がします。そのため、最初はテーブルにまったく別のツールを使用する必要があります。そうすれば、いずれにしてもまったく別の方法があるでしょう。
私の質問は次のとおりです:
- 表を生成するためにどのプログラムを使用すべきか(他の誰かがそれを行うので、彼らにとって複雑すぎたり高価すぎたりしてはいけません。可能であれば、Excel のような簡単で一般的なものがよいでしょう)
- そしてもちろん、それを LaTeX に取り込む方法も教えてください。すでに回答されているものを再度提供する必要はありません。ここにある既存の質問と回答を読むことはできますが、数が多すぎて、私の知識が限られているため、どの回答を試せばよいかのヒントが得られれば幸いです。
- .tex ファイル内の最終 PDF のレイアウトを変更することはまだ可能であるはずですが、それはどのソリューションでも機能すると思います。
以下は、PDF の 1 つが最終的にどのようになるかを示したスケッチです。
例の表:
私の問題を明確にできたことを願っています。ご協力ありがとうございました!
答え1
datatool パッケージを使用した解決策を見つけました。まだ完璧ではありませんが、改善のためのアイデアはあるでしょうか?
私はすべての写真をフォルダに入れて保存し、
ls /b *.jpeg >pix.csv
すべての写真の .csv を生成します。(Mac で作業中)
次に、それと使用したい列 (.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
上記の回答は 1 つの言語に対してのみ有効ですが、ここでは質問で尋ねられたように、レベル オプション付きの 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) を使用して、複数のカード/ページを 1 枚の A4 用紙/シートに印刷しました。