2015-03-24 6 views
17

मैं एक आरएमडी/निट-दस्तावेज़ में threeparttable बनाना चाहता हूं और तालिका के नीचे एक नोट जोड़ना चाहता हूं। तालिका results = "asis" के साथ एक खंड के अंदर आर-फ़ंक्शन द्वारा बनाई गई है। मैंने कामकाजी उदाहरण में फ़ंक्शन नहीं जोड़ा क्योंकि यह काफी वर्बोज़ है और समस्या शुद्ध लाटेक्स कोड से स्पष्ट है।आरएमडी/नटिर: लाटेक्स वातावरण में मार्कडाउन उद्धरण

यह काम करता है और परिणाम अपेक्षा के अनुसार दिखता है।

--- 
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

दुर्भाग्य से, तालिका कैप्शन में प्रशस्ति पत्र से काम नहीं कर रहा है। यह ठीक काम करता है अगर मैं इसे लाटेक्स पर्यावरण से बाहर ले जाता हूं, लेकिन अंदर नहीं। क्या लाटेक्स पर्यावरण में मार्कडाउन को पार्स करने का कोई तरीका है?

+1

मुझे नहीं लगता कि यह संभव है। पांडोक कच्चे टेक्क्स ब्लॉक के अंदर मार्कडाउन का विश्लेषण नहीं करता है। क्या आपके कोड को लेटेक्स के बजाय मार्कडाउन टेबल आउटपुट करना संभव होगा? – tmpname12345

+1

मुझे नहीं लगता कि इस प्रकार के टेबल स्वरूपण अब तक पैंडोक में संभव है। – crsh

+2

चूंकि आप तालिका उत्पन्न करने के लिए फ़ंक्शन का उपयोग कर रहे हैं, इसलिए आप इसे दो में विभाजित कर सकते हैं जहां यह उद्धरण उत्सर्जित करता है और इसके बजाय दो फाइलों को लिखता है, फिर '\ input {part1.txt} [@ rao2001basic] \ input {part2 का उपयोग करें। टेक्स्ट}। हालांकि यह एक बाहरी बीआईबी फ़ाइल का उपयोग करने के लिए आसान और अधिक प्रतिलिपि बनाने योग्य हो सकता है। – Thell

उत्तर

0

मैंने पाया LaTeX साथ उलझे बिना कि यदि आप bookdown::pdf_document2() स्वरूप का उपयोग करने को तैयार हैं, तो आप text references उपयोग कर सकते हैं इस समस्या का हल करने के लिए:

--- 
title: "Untitled" 
output: bookdown::pdf_document2 
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 
--- 

(ref:tablenote) 
This table was created by @rao2001basic. 

\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.} (ref:tablenote)} 
\end{threeparttable} 
\end{table} 

यह भी काम करता है जब टेबल आर में द्वारा बनाई गई हैं:

```{r results = "asis"} 
knitr::kable(mtcars[1:3, ], caption = "(ref:tablenote)") 
``` 
3

इस तरह की समस्या अनिवार्य रूप से एक बचने वाली समस्या है या बल्कि पैंडोक के स्वचालित लेटेक्स ब्लॉक प्रारंभ/समाप्ति पहचान का एक बचाव मुद्दा है।

इस विशेष मामले के वातावरण के साथ लिखा जा सकता है

\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} का नाम बदलने के लिए एक मजबूत जेनेरिक समाधान मौजूद था जो चुनिंदा टेक्स्ट के भीतर मार्कडाउन की अनुमति दे सकता है ब्लॉक। कुछ की तरह ...

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

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

जो इस के लिए काम करता है, etoolbox पैकेज का उपयोग, लेकिन मुझे नहीं लगता कि यह एक सिफारिश समाधान होगा।

+0

धन्यवाद एक गुच्छा, ऐसा लगता है कि यह सिर्फ मेरे उद्देश्यों के लिए काम कर सकता है। मैं एक नजदीक देखो ले जाऊंगा। – crsh