虽然我有很多使用 R 的经验,但对 LaTeX 还是个新手,而且事实证明这是一个相当大的挑战。我是一名生物学家,我目前的项目是自动为各种植物物种创建标签。我使用 LabelleR 包来完成这项任务(尽管这不是我发现问题的地方)。
该过程包括将用 LaTeX 编写的模板插入到包中以自定义标签。此外,需要一个数据集,其中每行代表一种植物,列包含标签的不同部分。当尝试在单元格中包含多行文本时会出现问题;第二行与第一行不对齐,好像间距不会影响第二行的位置。似乎只有第一行文本受到 \hspace 命令的影响,而后续行根本不受影响。
我对参数 location 和 area.description 有疑问。
这是我的代码:
for (i in seq_along(params$collection.i)){
cat("
\\begin{mdframed}[linewidth=2pt,linecolor=black]\n
\\pagenumbering{gobble}
\\begin{center}
{\\fontsize{25pt}{80pt}\\selectfont\\bf ",params$subtitle,"} \\\\
\\end{center}
\\begin{center}
\\bigskip
{\\fontsize{40pt}{100pt}\\selectfont\\bf", params$title, "} \\\\
\\end{center}
\\vspace{0.5cm}
\\begin{center}
{\\fontsize{30pt}{100pt}\\selectfont\\bf {\\emph{",params$taxon.i[i],"}} ",params$author.i[i],"} \\\\
\\end{center}
\\begin{flushright}
\\hspace{0.5cm}
{\\fontsize{20pt}{100pt}\\selectfont Det.", params$det.i[i]," ", params$date.det.i[i],"~~~~}\\\\
\\end{flushright}
\\begin{flushleft}
\\hspace{0.5cm}
{\\fontsize{30pt}{100pt}\\selectfont", params$location.i[i],"} \\\\
\\vspace{0.25cm}
\\hspace{0.5cm}
{\\fontsize{30pt}{100pt}\\selectfont Altitud:", params$elevation.i[i],"}\\\\
\\vspace{0.25cm}
\\hspace{0.5cm}
{\\fontsize{30pt}{100pt}\\selectfont Lat y Lon:", params$latitude.i[i], " | ", params$longitude.i[i],"} \\\\
\\vspace{0.5cm}
\\hspace{0.5cm}
{\\fontsize{25pt}{100pt}\\selectfont", params$area.description.i[i],"} \\\\
\\vspace{2cm}
\\end{flushleft}
\\vfill
\\begin{flushleft}
\\hspace{0.5cm}
{\\fontsize{30pt}{100pt}\\selectfont\\bf Colector: ",params$collector.i[i]," ",params$collection.i[i],"} \\\\
\\hspace{0.5cm}
{\\fontsize{25pt}{100pt}\\selectfont\\bf Fecha: ",params$date.i[i],"} \\\\
\\end{flushleft}
\\vspace{1.5cm}
\\end{mdframed}\n
\\pagebreak")
}
我正在等待的标签:
我得到的标签是:
如果有人有解决方案,我将不胜感激。提前谢谢您!
尼科
答案1
您 \hspace{0.5cm}
在每个字段前添加了以增加左边距,但这就像制作这个 MWE 并期望单词“baz”与“foo”对齐:
\documentclass[twocolumn]{article}
\begin{document}
\hspace{6cm} foo bar baz
\end{document}
即\hspace
在所在行添加一个水平空格。结束点。
消除
template="myherbarium-or-whatever.Rmd"
,添加
keep.files=TRUE
恢复默认模板herbarium.Rmd
编辑新模板以添加如下
\\begin{mdframed}[
选项:
innerleftmargin=5em,
innerrightmargin=5em,
\bf
用更安全的替代已弃用的\bfseries
您想要的其他更改,例如将分类单元居中、更改字体大小等,但不使用
\hspace{0.5cm}
(也不使用\vspace{0.5cm}
,将\vfill
s 留在其位置,如果文本高度可能发生太大变化,您不需要固定的垂直空间)。
笔记:您的代码(只是模板的 R 块)无法“按原样”重现,需要进行太多逆向工程才能正确测试。更好的 MWE 应该是完整的 R 脚本来生成示例,例如:
library(labeleR)
herbarium.table <- data.frame(...)
create_herbarium_label (data = herbarium.table, ... ,template="Mytemplate.Rmd")
当然,还添加完整的Mytemplate.Rmd
,包括 YAML 标头,以便任何 R+LaTeX 用户都可以运行它。
或者,对于没有 R 的 LaTeX 用户来说,这将是一个完美的 MWE,用于keep.files=TRUE
获取.tex
版本,然后减少与问题无关的部分(标题、字体大小、粗体字体、mdframed 框等),同时仍然可以“按原样”编译并显示问题。这意味着将 MWE 减少到只有几行,这很费力,但能教会 10 多个教训。