我想创建每张幻灯片都包含一张图片的投影仪幻灯片。我有一个文件,其中包含所有图片位置的列表。
这是我的代码:
\documentclass{beamer}
% Import necessary packages
\usepackage{pdfpages}
\usepackage{tikz}
% Set beamer theme and color scheme
\usetheme{Madrid}
\usecolortheme{beaver}
% Define title and author
\title{PDF Slides}
\author{Your Name}
\begin{document}
% Title slide
\begin{frame}
\titlepage
\end{frame}
% Read list of PDF file names from text file
\newread\file
\openin\file=fileloop.txt
\loop
\read\file to\fileline
\unless\ifeof\file
% Remove trailing newline character from file name
\edef\fileline{\expandafter\stripnewline\fileline}
% Create slide with PDF image for current file
\begin{frame}
\frametitle{\fileline}
\centering
\includegraphics[height=0.7\textheight, width=0.8\textwidth]{\fileline}
\end{frame}
\repeat
\closein\file
\end{document}
我收到的错误是:
多余的 },或忘记了 $。未定义的控制序列。缺少插入的 }。缺少插入的 $。
错误是由于\repeat
我检查了,没有任何内容未关闭。正确的使用方法是什么\repeat
?
编辑:
fileloop.txt 如下所示:
file_1.pdf
file_2.pdf
file_3.pdf
所有文件都与 latex 脚本位于同一文件夹中。它们每行列出一个文件,并且没有用逗号分隔。文件名中有下划线。我不确定这是否会导致问题。
答案1
使用expl3
。
\begin{filecontents*}{\jobname.lst}
example-image-a
example-image-b
example-image-c
\end{filecontents*}
\documentclass{beamer}
% Set beamer theme and color scheme
\usetheme{Madrid}
\usecolortheme{beaver}
%% boilerplate code for image inclusion from a file
\ExplSyntaxOn
\NewDocumentCommand{\dofromfile}{mm}
{% #1 = file name, #2 = template
\michal_read_do:nn { #1 } { #2 }
}
\ior_new:N \g_michal_read_ior
\cs_new_protected:Nn \michal_read_do:nn
{
\ior_open:Nn \g_michal_read_ior { #1 }
\ior_str_map_inline:Nn \g_michal_read_ior { #2 }
\ior_close:N \g_michal_read_ior
}
\ExplSyntaxOff
% Define title and author
\title{PDF Slides}
\author{Your Name}
\begin{document}
% Title slide
\begin{frame}
\titlepage
\end{frame}
\dofromfile{\jobname.lst}{
\begin{frame}
\frametitle{\texttt{#1}}
\centering
\includegraphics[height=0.7\textheight, width=0.8\textwidth]{#1}
\end{frame}
}
\end{document}
我以前filecontents
只是为了使示例独立起来。
在第二个参数中,\dofromfile
您可以指定要对文件当前输入行执行的操作,用 表示#1
。