Подтвердить что ты не робот

Rmd/Kntir: цитирование в среде LaTeX

Я хочу создать threeparttable в документе Rmd/Knitr и добавить примечание в нижней части таблицы. Таблица создается с помощью R-функции внутри фрагмента с results = "asis". Я не добавлял функцию в рабочий пример, потому что это довольно многословно, и проблема очевидна из чистого кода LaTeX.

Это работает, и результат выглядит так, как ожидалось.

---
title: "Untitled"
output: pdf_document
header-includes:
- \usepackage{threeparttable}
- \usepackage{booktabs}
- \usepackage{longtable}
references:
- id: rao2001basic
  title: Basic Research in Parapsychology
  author:
  - family: Rao
    given: K.R.
  issued:
    year: 2001
  publisher: McFarland
  type: book
---

\begin{table}[h]
\centering
\begin{threeparttable}
\caption{A summary table of the cars dataset.}
\begin{tabular}{lrr}
\toprule
Descriptives & speed & dist\\
\midrule
Mean & 15.4 & 42.98\\
SD & 5.29 & 25.77\\
Min & 4 & 2\\
Max & 25 & 120\\
\bottomrule
\end{tabular}
\tablenotes{\item\textit{Note.} This table was created by @rao2001basic. }
\end{threeparttable}
\end{table}

enter image description here

К сожалению, цитирование в заголовке таблицы не работает. Он отлично работает, если я выберу его из среды LaTeX, но не внутри. Есть ли способ разбора Markdown в среде LaTeX?

4b9b3361

Ответ 1

Этот вид проблемы по существу является проблемой экранирования или, скорее, проблемой предотвращения автоматического распознавания начала и конца блока латекса pandoc.

Этот конкретный случай можно записать с помощью команд среды непосредственно как

\table[h]
\centering
\threeparttable
\caption{A summary table of the cars dataset.}
\begin{tabular}{lrr}
\toprule
Descriptives & speed & dist\\
\midrule
Mean & 15.4 & 42.98\\
SD & 5.29 & 25.77\\
Min & 4 & 2\\
Max & 25 & 120\\
\bottomrule
\end{tabular}
\tablenotes[flushleft]
\item\textit{Note.} This table was created by @rao2001basic.
\endtablenotes
\endthreeparttable
\endtable

но если begin{env}/end{env} действительно необходимы, то макросы можно использовать как это

\def \btable{\begin{table}}
\def \etable{\end{table}}
\def \bthreeparttable{\begin{threeparttable}}
\def \ethreeparttable{\end{threeparttable}}
\def \btablenotes{\begin{tablenotes}}
\def \etablenotes{\end{tablenotes}}

Было бы неплохо, если бы существовало надежное универсальное решение для переименования begin{env}/end{env}, которое могло бы позволить выборочную уценку в блоках tex. Что-то вроде...

\newcommand\mdbegin[2]{%
  \ifstrempty{#1}{%
    \begin{#2}
  }{%
    \begin{#1}[#2]
  }%
}

\newcommand\mdend[1]{%
  \end{#1}
}

который работает для этого, используя пакет etoolbox, но я не думаю, что это было бы рекомендуемым решением.