问题 1:\includegraphics

问题 1:\includegraphics

我想要创建一个函数,它可以插入图像并附加文件(例如,有关绘图的数据),所以我需要为图像名称设置一个变量,它将用于附加文件。(\attachfile来自attachfile2包。)

但是现在我不知道如何在 LaTeX3 中使用变量 for \includegraphicsand 。\attachfile

(我忽略了\ExplSyntaxOn下面\ExplSyntaxOff代码中的。)

问题 1:\includegraphics

LaTeX2e 的变量很好。

\def\imgname{img.eps}
\includegraphics{\imgname}

但 LaTeX3 失败了:

\tl_new:N \l_img_name_tl
\tl_set:Nn \l_img_name_tl {example-image.eps} 
\includegraphics{\tl_use:N \l_img_name_tl}

仅当我使用“example-image”(无扩展名)时才成功,但我想保留扩展名以选择具有相同名称的不同文件(img.eps,img.png,...),因此我尝试了另一个扩展名变量但也失败了。

\tl_new:N \l_img_name_tl
\tl_set:Nn \l_img_name_tl {example-image} 
\tl_new:N \l_ext_name_tl
\tl_set:Nn \l_ext_name_tl {eps}
\includegraphics{\tl_use:N \l_img_name_tl . \tl_use:N \l_ext_name_tl}

(更新:我发现上述代码仅在 eps 中失败,在 pdf、png、jpg 中运行良好。并且\tl_use:N可能不是必需的,我不确定。)

问题2:\attachfile

LaTeX2e 也失败了:

\def\fname{test.txt}
\attachfile{\fname}

看起来\attachfile不会扩展任何宏。所以我定义命令来修复,你有比这更好的理想吗?(以下代码是 LaTeX3)

\NewDocumentCommand{\eftaf}{m}{ % expand filename to \textattachfile
    \attachfile{#1}
}
\eftaf{\tl_to_str:N \l_data_fullname_tl}

问题 3:文件名中的点

我知道当文件名包含点时,我们应该使用{}。(看这里

\includegraphics{{img.img}.eps}

在 LaTeX3 中,我们是否有更好的方法来解决此问题?例如,使用str不带扩展名的图像名称类型。(它将与带扩展名的名称分开。)

更新,因为我\includegraphics现在可以使用变量。str类型可以正常工作。以下是代码:

\tl_new:N \l_img_name_tl
\tl_set:Nn \l_img_name_tl {img.img} 
\tl_new:N \l_ext_name_tl
\tl_set:Nn \l_ext_name_tl {pdf} 
\includegraphics{\tl_to_str:N \l_img_name_tl . \l_ext_name_tl}

但是\l_img_name_tl不能使用 {{img.img}},有没有什么理想的方法可以扩展它?

相关内容