我想在图片标题内(或页边空白处)插入二维码图像。然后我尝试写
\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}
谢谢你们的帮助,真的很有用!:)