在 RMarkdown 中创建 LaTeX 模板时段落中的文本对齐问题

在 RMarkdown 中创建 LaTeX 模板时段落中的文本对齐问题

虽然我有很多使用 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在所在行添加一个水平空格。结束点。

  1. 消除template="myherbarium-or-whatever.Rmd"

  2. 添加keep.files=TRUE恢复默认模板herbarium.Rmd

  3. 编辑新模板以添加如下\\begin{mdframed}[ 选项:

innerleftmargin=5em,
innerrightmargin=5em,
  1. \bf用更安全的替代已弃用的\bfseries

  2. 您想要的其他更改,例如将分类单元居中、更改字体大小等,但不使用\hspace{0.5cm}(也不使用\vspace{0.5cm},将\vfills 留在其位置,如果文本高度可能发生太大变化,您不需要固定的垂直空间)。

在此处输入图片描述


笔记:您的代码(只是模板的 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 多个教训。

相关内容