是否可以创建一个宏来列出在每章开头使用的超链接文件?

是否可以创建一个宏来列出在每章开头使用的超链接文件?

我有一段 Latex 代码,它会在我正在研究的一些讲义的每一章开头重复出现。

\begin{flushleft}
\centering{\fbox{
\footnotesize
\begin{tabular}{lll}
Files: & Chapter 1 & \href{https://www.college.edu/files/file1_1.txt}{file1_1.txt} \\
& & \href{https://www.college.edu/files/file1_2.txt}{file1_2.txt} \\
& & \href{https://www.college.edu/files/file1_3.txt}{file1_3.txt}
\end{tabular} }}
\end{flushleft}

是否可以创建一个宏,这样我就不用一次又一次地使用此模板了?每次使用它时唯一改变的是章节编号和文件链接列表。

我希望能够调用类似

ChapterMacro{Chapter 3}{file3_1, file3_2}

并让其自动生成上述 Latex。这能做到吗?

答案1

在此处输入图片描述

\documentclass[10pt,a4paper]{report}
\usepackage{hyperref}
\makeatletter
\def\zzzz#1{%
\begin{center}\footnotesize
\fbox{ %
\protected\gdef\zztmp{Files&Chapter \thechapter&\gdef\zztmp{&&}}%
\gdef\zztmpb{}%
{\let\\\relax
\let\href\relax
\@for \f:=#1\do{\xdef\zztmpb{\zztmpb\zztmp
\href{https://www.college.edu/files/\f.txt}{\f.txt}\\}}}%
\begin{tabular}{lll}
\zztmpb
\end{tabular} %
}%
\end{center}}

\makeatother

\begin{document}

\chapter{zzz}

\zzzz{aaa,bbb}

\chapter{qqq}

\zzzz{xxx,yyy,zzz}

\end{document}

答案2

使用etoolbox,正如 David 所建议的那样,没有必要flushleft\centering,选一个。此外,章节计数器也被使用,因此请求的参数{Chapter N}是可选的。

\documentclass{book}
\usepackage{hyperref,etoolbox}

\makeatletter
\newcommand\beginchapter[2][Chapter \thechapter]{%
\fbox{Files from : #1
  \begin{tabular}[t]{l@{}}
    \forcsvlist{\make@beginchapter}{#2}
  \end{tabular}
}
}
\newcommand\make@beginchapter[1]{\href{https://www.college.edu/files/#1.txt}{#1.txt} \\}
\makeatother

\begin{document}
\chapter{Chap title}
\beginchapter{file1\_1, file1\_2, file1\_3}

\chapter{Chas}
\beginchapter[Some other text]{file2\_1, file2\_2, file2\_3}
\end{document}

没有可选参数

带有可选参数

相关内容