我正在尝试使用该pst-barcode
包来创建包含在二维码中的 vcard,但令我惊讶的是,使用另一种编程语言来生成二维码的 vcard 却无法使用该包。
经过调查,发现问题是由于psbarcode
:第一的(并且只有第一个!)使用左括号和右括号,会创建一个换行符(而不是第一个空间在右括号后)。
(如果它有帮助:我还发现使用左括号而没有右括号只会返回一个空白的二维码)
这是我当前的代码:
\begin{pspicture}(25mm,25mm)
\begingroup
% The following def are used to solve a previous problem as
% there were "penalty @M" added for this characters
\def:{\string:}%
\def;{\string;}%
\psbarcode{%
MECARD:N:Doe,John;TEL:+1 (234) 567-8910;EMAIL:[email protected];;%
}{eclevel=L width=1.161 height=1.161}{qrcode}
\endgroup
\end{pspicture}
我知道我们通常需要在 vcard 中定义一个没有空格和其他字符的数字,但是在这里我需要这样,而且我认为当我们需要在 vcard 中使用括号的其他情况下它可能很有用。
另一条可能有用的信息:我当前的版本pst-barcode
有这个文件日期:\def\filedate{2011/03/10}
笔记:使用^040
and^041
代替(
and)
和parse
选项也能解决问题。
此次修正后遇到的新问题与字符集有关。这是我的第二个条形码:
\psbarcode{%
BEGIN:VCARD^^J%
N:Doé;John^^J%
TEL;WORK:+1 ^040234^041 567-8910^^J%
EMAIL:[email protected]^^J%
END:VCARD%
}{eclevel=L width=1.161 height=1.161 parse}{qrcode}
似乎返回的元素不是所有条形码读取器都能读取的,但如果我删除重音符号,它就能正常工作。读取器已使用其他 utf-8 编码的条形码进行了测试,返回的值是正确的。
我尝试使用 UTF-8 BOM(^239^187^191
),但是没有作用。
答案1
有三种可能的方法可以将数据传递到宏中:
\documentclass{minimal}
\usepackage{pst-barcode}
\begin{document}
\begin{pspicture}(1.2in,1.2in)
\psbarcode{MECARD:N:Doe,John;TEL:+1 (234) 567-8910;EMAIL:[email protected];;}%
{eclevel=L width=1.161 height=1.161}{qrcode}
\end{pspicture}
%
\begin{pspicture}(1.2in,1.2in)
\psbarcode{MECARD\string:N\string:Doe,John\string;TEL:+1 (234) 567-8910\string;EMAIL\string:[email protected]\string;\string;}%
{eclevel=L width=1.161 height=1.161}{qrcode}
\end{pspicture}
%
\begin{pspicture}(1.2in,1.2in)%% using ASCII decimal values, eg ^058->:
\psbarcode{MECARD^058N^058Doe,John^059TEL:+1 (234) 567-8910^059EMAIL^[email protected]^059^059}%
{eclevel=L width=1.161 height=1.161 parse}{qrcode}% option parse needed
\end{pspicture}
\end{document}
数据必须在一行中!% 不能用作 TeX 命令字符!
以此示例为例:
\documentclass{standalone}
\usepackage[T1]{fontenc}
\usepackage{pst-barcode}
\pagestyle{empty}
\begin{document}
\begin{pspicture}(1.2in,1.2in)
\psbarcode{BEGIN:VCARD
N:Do^233;John^010
TEL;WORK:+1 ^040234^041 567-8910^010
EMAIL:[email protected]^010
END:VCARD}
{eclevel=L width=1.161 height=1.161 parse}{qrcode}
\end{pspicture}
\end{document}
我将其转换为 png 图像并上传到http://zxing.org/w/decode我得到:
BEGIN:VCARD N:Doé;John
TEL;WORK:+1 (234) 567-8910
EMAIL:[email protected]
END:VCARD