尝试在“psbarcode”中使用括号会在第一个右括号后添加一个新行 + 字符集编码错误

尝试在“psbarcode”中使用括号会在第一个右括号后添加一个新行 + 字符集编码错误

我正在尝试使用该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}

笔记:使用^040and^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

相关内容