如何在标题或边距插入网页链接二维码?

如何在标题或边距插入网页链接二维码?

我想在图片标题内(或页边空白处)插入二维码图像。然后我尝试写

\begin{figure*}[!ht]
\centering
\includegraphics[height=.45\linewidth]{im1.eps}
\hfill
\includegraphics[height=.45\linewidth]{im2.eps}
\caption{My caption. \protect\qrcode[hyperlink,height=0.5in]{http://www.ctan.org} }
\label{fig:coherence}
\end{figure*} 

编译过程中会产生以下错误:

    <QR code requested for "http\unskip \penalty \@M  ://www.ctan.org" in version 0
-M.>

Package xcolor Warning: Incompatible color definition on input line 271.

./Chapter6.tex:271: Missing \endcsname inserted.
<to be read again> 
                   \unskip 
l.271 ...link,height=0.5in]{http://www.ctan.org} }

我怀疑错误来自不受支持的字符“:”,因为当从表达式中删除时,我有

\caption{My caption \protect\qrcode[hyperlink,height=0.5in]{http//www.ctan.org}} 

代码编译并生成一个漂亮的二维码图像(因此链接是“http//www.ctan.org”,不是我想要的)。你知道如何解决这个问题吗?我也尝试声明一个像这样的强大命令

\DeclareRobustCommand{\captionQR}{\qrcode[hyperlink,height=0.5in]{http://www.ctan.org}}

但收效甚微。

谢谢。

答案1

\marginnote并且\marginpar不是问题。但是使用\qrcode可能\caption会 — 取决于类 — 导致错误消息,但您可以使用框寄存器来避免这种情况:

\documentclass{scrartcl}
\usepackage{marginnote}
\usepackage{qrcode}
\usepackage{etoolbox}
\usepackage{hyperref}
\newsavebox\captionqr
\usepackage{mwe}
\begin{document}
\begin{figure}[!ht]
\centering
\includegraphics[width=.45\linewidth]{example-image-a}
\hfill
\includegraphics[width=.45\linewidth]{example-image-b}
\savebox\captionqr{\qrcode[hyperlink,height=0.5in]{http://www.ctan.org}}
\caption[My caption]{My caption.\usebox\captionqr}
\label{fig:coherence}
\end{figure}
In the margin with
\verb|\marginnote|\marginnote{\qrcode[hyperlink,height=0.5in]{http://www.ctan.org}}.\lipsum[1]

In the margin with
\verb|\marginpar|\marginpar{\qrcode[hyperlink,height=0.5in]{http://www.ctan.org}}.\lipsum[2]
\end{document} 

在此处输入图片描述

或者尝试使用包caption

\documentclass{scrartcl}
\usepackage{caption}
\usepackage{qrcode}
\usepackage{hyperref}
\usepackage{mwe}
\begin{document}
\begin{figure}[!ht]
\centering
\includegraphics[width=.45\linewidth]{example-image-a}
\hfill
\includegraphics[width=.45\linewidth]{example-image-b}
\caption[My caption]{My caption\protect\qrcode[hyperlink,height=0.5in]{http://www.ctan.org}}
\label{fig:coherence}
\end{figure}
\end{document}

答案2

问题在于babel简写。您可以对第二个参数进行去标记化,这样诸如 这样的字符:?!就不会再造成麻烦了。

\documentclass[twocolumn]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}

\usepackage{qrcode}
\usepackage{graphicx}

\usepackage{lipsum}

\newcommand{\safeqrcode}[2][]{%
  \qrcode[#1]{\detokenize{#2}}%
}


\begin{document}


abc\marginpar{\safeqrcode[hyperlink,height=0.5in]{http://tex.stackexchange.com}}
\lipsum[1]

\begin{figure*}[!ht]
\centering
\includegraphics[width=.2\linewidth]{example-image.eps}
\hfill
\includegraphics[width=.2\linewidth]{example-image.eps}
\caption{Ma légende : avec deux points ? \safeqrcode[hyperlink,height=0.5in]{http://www.ctan.org}}
\label{fig:coherence}
\end{figure*} 

\lipsum\lipsum

\end{document}

在此处输入图片描述

答案3

我提出了一个似乎有效的解决方案,同时尝试提供 MWE。正如我所怀疑的那样,错误来自那些“:”。我当时使用了包

\usepackage[french]{babel}

仅。当将其替换为

\usepackage[english]{babel}

我之前尝试的代码运行良好。为了保留法语作为文档中的默认语言,我现在包括

\usepackage[english,french]{babel}

当我想在页边空白处或标题处放置二维码时,我会使用

\selectlanguage{english}
\begin{figure}[!htbp]
\begin{center}
\includegraphics[width=.45\linewidth]{example-image-a}
\hfill
\includegraphics[width=.45\linewidth]{example-image-b}
\end{center}
\caption{My caption \protect\qrcode[hyperlink,height=0.5in]{http://www.ctan.org}} 
\label{fig:myfig}
\end{figure}
\selectlanguage{french}

谢谢你们的帮助,真的很有用!:)

相关内容