我正在写一篇论文,因为我必须打印它,所以我想使用 QR(与软件包一起qrcode
)来显示文档中的所有链接。我想要组织它的方式是在附录中有一个部分,其中包含所有 QR 码以及书面链接。
我可以手动完成,但有没有办法让它像词汇表一样工作?然后可以用 定义每个二维码\newqrcode{link}{label}
并用 引用\qr{label}
。文本将只包含指向二维码的一些注释。附录中将列出所有二维码。
有办法吗?谢谢。
编辑:
基于@Marijn的回答我创建了以下 MWE:
\documentclass{article}
\usepackage{hyperref}
\usepackage{qrcode}
\usepackage{tikz}
\usepackage{fontspec}
\setlength{\parindent}{0em}
\setlength{\parskip}{1em}
\renewcommand{\familydefault}{\sfdefault}
\newcounter{qrlink}
\setcounter{qrlink}{0}
\newwrite\qrfile
\immediate\openout\qrfile=\jobname.qrs
\newfontfamily\qrfont{MinecraftTen.ttf}
\newcommand{\newqrcode}[2]{%
\stepcounter{qrlink}%
\immediate\write\qrfile{
\noexpand\begin{minipage}{4cm}
\noexpand\begin{tikzpicture}
\noexpand\draw (0,0) node{\noexpand\qrcode[height=3cm, nolink]{#1}};
\noexpand\fill[white] (-4mm,-4mm) rectangle (4mm,4mm);
\noexpand\node at (0,0){\noexpand\textbf{\noexpand\huge \noexpand\qrfont \theqrlink}};
\noexpand\end{tikzpicture}
\noexpand\end{minipage}
\noexpand\begin{minipage}{10cm}
\noexpand\section*{#2}
\noexpand\url{#1} \noexpand\label{qr\theqrlink}\\[1mm]
Used on page \thepage
\noexpand\end{minipage}\\
}%
\hyperref[qr\theqrlink]{\theqrlink}
}
\newcommand{\printqrcodes}{
\immediate\closeout\qrfile
\section*{List of QR Codes}
\addcontentsline{toc}{section}{List of QR Codes}
\input{\jobname.qrs}
}
\begin{document}
The link to the TeX Stack Exchange can be found in QR code \newqrcode{https://tex.stackexchange.com}{TeX Stack Exchange}.
This question in particular is in QR code \newqrcode{https://tex.stackexchange.com/questions/635426/how-to-make-a-glossary-like-section-with-qr-codes}{This Question}.
You can download the font I used for the numbering in QR code \newqrcode{https://www.fontspace.com/minecraft-ten-font-f40317}{Minecraft Font}. Make sure the file names match, and you're using XeTeX.
\appendix
\printqrcodes
\end{document}
答案1
以下代码定义了一个包装器命令\newqrcode
,该命令不仅打印文档中的超链接,还打印命令以将二维码生成到外部.qrs
文件。此文件中打印了一个计数器、命令\qrcode
和链接的标签。在文档末尾,此文件被关闭并使用添加到文档中\input
。
梅威瑟:
\documentclass{article}
\usepackage{hyperref}
\usepackage{qrcode}
\newcounter{qrlink}
\setcounter{qrlink}{0}
\newwrite\qrfile
\immediate\openout\qrfile=\jobname.qrs
\newcommand{\newqrcode}[2]{%
\stepcounter{qrlink}%
\immediate\write\qrfile{\theqrlink. \noexpand\qrcode[height=1cm]{#1} #2\\}%
\href{#1}{#2} (\theqrlink)%
}
\begin{document}
A link: \newqrcode{https://tex.stackexchange.com}{TeX.SE}
Another link: \newqrcode{https://tex.stackexchange.com}{also TeX.SE}
\immediate\closeout\qrfile
\section*{List of QR codes}
\input{\jobname.qrs}
\end{document}
生成的.qrs
文件:
1. \qrcode [height=1cm]{https://tex.stackexchange.com} TeX.SE\\
2. \qrcode [height=1cm]{https://tex.stackexchange.com} also TeX.SE\\
主文档编译结果:
请注意,url 是作为普通参数传递到\newqrcode
并从 传递到 的\href
,这可能会导致 url 中的特殊字符出现问题(\href
通常会自行处理)。因此,如果您打算实际使用此解决方案,请仔细测试,而不是将其视为概念证明。