![rmarkdown 文档中的条形码输出](https://linux22.com/image/474877/rmarkdown%20%E6%96%87%E6%A1%A3%E4%B8%AD%E7%9A%84%E6%9D%A1%E5%BD%A2%E7%A0%81%E8%BE%93%E5%87%BA.png)
我想要一个像这个答案中给出的条形码无法生成 code128 条形码
它还不能与pdflatex
引擎一起工作 - 必须将其更改为引擎,并且在 YAML 标头中xelatex
完成(希望如此?!)。latex_engine: xelatex
所以我建立了我的放射科文件
---
geometry: paperheight=8cm,paperwidth=12cm,margin=0.5cm
output: pdf_document
latex_engine: xelatex
fontsize: 10pt
header-includes:
- \pagenumbering{gobble}
- \usepackage{pst-barcode,pstricks-add}
params:
barCodeNumber: 12345678
---
```{=latex}
\psset{unit=1in}
\begin{pspicture}(3.5,1.2)
\psbarcode{`r params[["barCodeNumber"]]`}{includetext}{code128}
\end{pspicture}
```
但不幸的是它失败了并出现以下错误消息(render("C:/Users/tueftla/R/Test.Rmd")
):
Error in yaml::yaml.load(..., eval.expr = TRUE) :
Scanner error: mapping values are not allowed in this context at line 3, column 17
我必须更改什么?我必须做哪种更改,才能不显示条形码号码?
任何提示都值得赞赏,并提前致谢。
答案1
您的问题在于 YAML 标头规范。请参阅本节(3.3.7.1 LaTeX 引擎)关于如何指定 LaTeX 引擎。具体来说,您需要
output:
pdf_document:
latex_engine: xelatex
您缺少pdf_document
与其相关的“选项”后面的冒号。
---
geometry: paperheight = 8cm, paperwidth = 12cm, margin = 0.5cm
output:
pdf_document:
latex_engine: xelatex
fontsize: 10pt
header-includes:
- \pagenumbering{gobble}
- \usepackage{pst-barcode,pstricks-add}
params:
barCodeNumber: 12345678
---
```{=latex}
\psset{unit=1in}
\begin{pspicture}(3.5,1.2)
\psbarcode{`r params[["barCodeNumber"]]`}{includetext}{code128}
\end{pspicture}
```
答案2
仅供参考,这将是从您的 RMD 文件复制的有效 .tex 文件,并使用 XeLaTeX 进行编译:
\documentclass[10pt,a4paper]{article}
\usepackage{pst-barcode,pstricks-add}
\begin{document}
\psset{unit=1in}
\begin{pspicture}(3.5,1.2)
\psbarcode{`r params[["barCodeNumber"]]`}{includetext}{code128}
\end{pspicture}
\begin{pspicture}(3.5,1.2)
\psbarcode{12345678}{includetext}{code128}
\end{pspicture}
\end{document}
正如您所见,它按字面意思接受了 3 个参数中的第一个参数:
因此,针对您的问题,关键问题是:
- 第一个参数 r params[["barCodeNumber"]] 会被替换吗?
- 如果是,用什么?
- 以及:为什么你的 R 系统应该(成功)取代它?
如..所示,如果您发布 YAML 文件,那将会很有帮助。
答案3
更好的方法是使用:
使用较新的 Quarto 语法/格式。Xelatex 是此处的默认 LaTeX 引擎,因此至少这是您预先节省的。
尽可能避免复杂的内联 R 代码和复杂的内联 R 输出,您就会很高兴。
---
format: pdf
geometry:
- margin=0.5cm
- paperheight=8cm
- paperwidth=12cm
header-includes:
- \usepackage{pst-barcode,pstricks-add}
- \pagenumbering{gobble}
params:
barCodeNumber: 12345678
---
```{r}
#| echo: false
x <- params$barCodeNumber
```
```{=latex}
\psset{unit=1in}
\begin{pspicture}(3.5,1.2)
\psbarcode{`{r} x`}{includetext}{code128}
\end{pspicture}
```
但是,使用旧版 Rmarkdown 也可以这样做:
---
geometry: paperheight=8cm,paperwidth=12cm,margin=0.5cm
output:
pdf_document:
latex_engine: xelatex
fontsize: 10pt
header-includes:
- \usepackage{pst-barcode,pstricks-add}
- \pagenumbering{gobble}
params:
barCodeNumber: 12345678
---
```{r}
#| echo: false
x <- params$barCodeNumber
```
```{=latex}
\psset{unit=1in}
\begin{pspicture}(3.5,1.2)
\psbarcode{`r x`}{includetext}{code128}
\end{pspicture}
```