这个问题与我的其他问题相关这里。我找到了一个解决方案,pdfpages
感谢TX.SX
:
\documentclass[]{scrbook}
\usepackage{authblk}
\usepackage{pdfpages}
\newcommand{\insertpaper}[4]%
{ % Syntax: \insertmydocument{Toc level}{Title}{Subtitle}{File}
% Requires: tocloft hyperref pdfpages
\newpage
\phantomsection
\cftaddtitleline{toc}{#1}{#2}{\thepage}
\cftchapterprecistoc{#3}
\includepdf[pages=-, pagecommand={\pagestyle{plain}}]{#4}
}
\begin{document}
\tableofcontents
\insertpaper{chapter}{Title o the 1st paper}{A.U. Thor11, A.U. Thor12}{paper1.pdf}
\insertpaper{chapter}{Title o the 2nd paper}{A.U. Thor21, A.U. Thor22}{paper2.pdf}
\end{document}
对于制作会议论文集,我使用pdfpages
,如示例中所示LuaLaTeX
。宏\insertpaper
在目录中添加了论文的标题和作者。但为此,我手动编写了 PDF 中所需的字段(例如标题和作者)。我的论文(PDFs
)也是通过LuaLaTeX
使用scrartcl
类和用于创建和authblk
的包创建的。现在我的想法不是手动填写相应的字段,而是从文件中读取它们。也就是说,之前应该将所需的字段写入适当的文件。author
affiliations
paper.tex
\insertpaper
如果只有一个参数filename
并且从相应的信息文件中读取有关所需字段的信息,那就太好了。
因此,我需要一些帮助来创建此类程序Lua
(可取的)或LaTeX3
其他东西。
我找到了一些关于如何读取数据的解决方案
\documentclass{scrartcl}
\usepackage{luatextra}
\usepackage{filecontents}
\begin{filecontents}{testdata.dat}
Title of the page
A.U. Thor1
A.U. Thor2
\end{filecontents}
\begin{luacode}
function readtxt()
file = io.open("testdata.dat", "r")
for line in file:lines() do
tex.print(line.."\\\\")
end
end
\end{luacode}
\begin{document}
\directlua{readtxt()}
\end{document}
但我不知道如何将数据替换为所需的命令\insertpaper
。
答案1
如果你按照我的回答中给出的建议如何将文章的作者写入文件?,当你编译时,paper1.tex
你将得到一个名为的文件paper1-titleauthors.dat
,其中包含类似
\thispapertitle{Title of the article}
\thispaperauthor{First Author}
\thispaperauthor{Second Author}
\finishauthors
现在您可以使用数据了:
\documentclass[]{scrbook}
\usepackage{authblk,tocloft}
\usepackage{pdfpages}
\usepackage{hyperref}
\newcommand{\insertpaper}[1]%
{% #1 is the file name (without extension)
\clearpage
\renewcommand\papertitle{}% reinitialize
\renewcommand\paperauthors{}% reinitialize
\input{#1-titleauthors.dat}%
\phantomsection
\cftaddtitleline{toc}{chapter}{\papertitle\ --- \paperauthors}{\thepage}%
\includepdf[pages=-, pagecommand={\pagestyle{plain}}]{#1}%
}
\newcommand\papertitle{}% initialize
\newcommand\paperauthors{}% initialize
\newcommand{\thispapertitle}[1]{\renewcommand\papertitle{#1}}
\makeatletter
\newcommand{\thispaperauthor}[2]{%
\g@addto@macro\paperauthors{#1}%
\ifx#2\finishauthors
% no more authors
\else
\g@addto@macro\paperauthors{, }%
\expandafter\thispaperauthor % reinsert the swallowed token
\fi
}
\makeatother
\begin{document}
\tableofcontents
\insertpaper{paper1}
\end{document}
这是您将获得的目录页;当然可以定义目录行的不同格式。