Rstudio rmarkdown: একক পিডিএফ উভয় প্রতিকৃতি এবং ল্যান্ডস্কেপ লেআউট


86

আমি অবাক হই যে কীভাবে rmarkdownপিডিএফ তৈরি করতে ব্যবহার করব যা একই ডকুমেন্টে প্রতিকৃতি এবং ল্যান্ডস্কেপ লেআউট উভয়ই রয়েছে। যদি কোনও খাঁটি rmarkdownবিকল্প থাকে যা ল্যাটেক্স ব্যবহারের চেয়ে আরও ভাল।

এখানে একটি ছোট, পুনরুত্পাদনযোগ্য উদাহরণ। প্রথমে .Rmdআরস্টুডিওতে এটি রেন্ডারিং করুন ( বোনা পিডিএফ বোতাম টিপুন) এর ফলে ল্যান্ডস্কেপ বিন্যাসে সমস্ত পৃষ্ঠা সহ পিডিএফ হবে:

---
title: "All pages landscape"
output: pdf_document
classoption: landscape
---

```{r}
summary(cars)
```

\newpage
```{r}
summary(cars)
```

তারপরে একটি দস্তাবেজ তৈরি করার চেষ্টা যা প্রতিকৃতি এবং ল্যান্ডস্কেপ বিন্যাসের সাথে মিশে। এর প্রাথমিক সেটআপটি এখানেYAML 'অন্তর্ভুক্ত' বিভাগ অনুযায়ী করা হয় । ফাইল 'header.tex' শুধুমাত্র রয়েছে , একটি প্যাকেজ জন্য প্রস্তাবিত ভূদৃশ্য বিন্যাস এখানে । ফাইল হিসাবে একই ডিরেক্টরিতে অবস্থিত কোন ফাইল। in_header\usepackage{lscape}knitr.tex.Rmd

---
title: "Mixing portrait and landscape"
output:
    pdf_document:
        includes:
            in_header: header.tex
---

Portrait:
```{r}
summary(cars)
```

\newpage
\begin{landscape}
Landscape:
```{r}
summary(cars)
```
\end{landscape}

\newpage
More portrait:
```{r}
summary(cars)
```

যাইহোক, এই কোডটির ফলে একটি ত্রুটি হয়:

# ! You can't use `macro parameter character #' in horizontal mode.
# l.116 #

# pandoc.exe: Error producing PDF from TeX source
# Error: pandoc document conversion failed with error 43

কোন সাহায্যের অনেক প্রশংসা করা হয়।

উত্তর:


81

সুতরাং, ক্ষীরের পরিবেশের বিষয়বস্তু বিশ্লেষণ pandoc করে না , তবে আপনি আপনার ফাইলের আদেশগুলি পুনরায় সংজ্ঞায়িত করে এটি বোকা বানাতে পারেন header.tex:

\usepackage{lscape}
\newcommand{\blandscape}{\begin{landscape}}
\newcommand{\elandscape}{\end{landscape}}

সুতরাং, এখানে \begin{landscape}থেকে পুনরায় সংজ্ঞায়িত করা হয় \blandscape, এবং \end{landscape}করতে \elandscape.Rmdফাইলটিতে নতুন সংজ্ঞায়িত কমান্ড ব্যবহার করা কার্যকর বলে মনে হচ্ছে:

---
title: "Mixing portrait and landscape"
output:
    pdf_document:
        includes:
            in_header: header.tex 
---

Portrait
```{r}
summary(cars)
```

\newpage
\blandscape
Landscape
```{r}
summary(cars)
```
\elandscape

\newpage
More portrait
```{r}
summary(cars)
```

আপনার গবেষণা এবং উত্তর (+1) জন্য ধন্যবাদ। 'ল্যাটেক্স পরিবেশের বিষয়বস্তু বিশ্লেষণ করে না' অন্তর্ভুক্ত বিভাগ থেকে সম্পূর্ণ পরিষ্কার নয় । তবে আমি ধরেই নিলাম আমার latexঅজ্ঞতাও দোষারোপ করা।
হেনরিক

4
এটি একটি জটিল সরঞ্জামচেন, তিন / চারটি পৃথক প্লেয়ার (নিটার-রমার্কডাউন / প্যান্ডোক-লেটেক্স) সহ এবং আমি দেখতে পেয়েছি যে ডকুমেন্টেড স্টাফের বাইরে জিনিসগুলি কোথায় ব্রেক হয় তা নির্ধারণ করা বেশ শক্ত hard এগুলি স্বাধীনভাবে চালিত করার সর্বোত্তম উপায় বলে মনে হচ্ছে: প্রথমে বোনা, ফলাফলটি দেখুন .md(সূক্ষ্ম, এখানে), তারপরে এমডি-> টেক্স রূপান্তর (এটি যেখানে ভুল হয়েছে)। ত্রুটি বার্তাটি সহায়ক ছিল না কারণ এটি ইতিমধ্যে পরবর্তী পদক্ষেপ (ল্যাটেক্স)।
baptiste

এই সমাধানের সাথে, পিডিএফ-তে, "# পরিচিতি" দ্বারা নির্মিত স্ট্রাকচার্ড শিরোনামের পরিবর্তে # টি প্রতীক হিসাবে উপস্থিত হবে
জেমার্সেলিনো

4
আমি বোবা ল্যাটেক্স প্রশ্নটি অনুমান করি: হেডার.টেক্স ফাইলটি কোথায় (বা হওয়া উচিত) যাতে এটি পড়ে? আমি আরমার্কডাউনকে ভারী ব্যবহার করি তবে তুলনামূলকভাবে নতুন, এবং এখনও সব ইন্টারলকিং প্যাকেজ এবং কীভাবে তারা একসাথে কাজ করছে তা বুঝতে পারি নি।
মাইক উইলিয়ামসন

header.tex ফাইলে একই ডিরেক্টরি হতে হবে
Baptiste

50

পূর্ববর্তী সমাধানগুলির উপর ভিত্তি করে, নিম্নলিখিত সমাধানের জন্য সহায়ক header.texফাইলের প্রয়োজন হয় না । সমস্ত বিষয়বস্তু .Rmdফাইল অন্তর্ভুক্ত । header-includesYTL শিরোনামের পরিবর্তে LaTeX কমান্ডগুলি সংজ্ঞায়িত করা হয়েছে । আরও তথ্য এখানে পাওয়া যাবে

এছাড়াও, আমি লক্ষ করেছি যে lscapeLaTeX প্যাকেজটি ব্যবহার করে কোনও পৃষ্ঠার বিষয়বস্তু ঘোরা হয় তবে পিডিএফ পৃষ্ঠা নিজেই নয়। এটি pdflscapeপ্যাকেজ ব্যবহার করে সমাধান করা হয়েছে ।

---
title: "Mixing portrait and landscape WITHOUT a header.tex file"
header-includes:
- \usepackage{pdflscape}
- \newcommand{\blandscape}{\begin{landscape}}
- \newcommand{\elandscape}{\end{landscape}}
output: pdf_document
---

Portrait
```{r}
summary(cars)
```

\newpage
\blandscape
Landscape
```{r}
summary(cars)
```
\elandscape

\newpage
More portrait
```{r}
summary(cars)
```

4
আমার সিস্টেমে, এই সমাধানটি কাজ করছে না। আমি একটি ম্যাক OS_10.13.4 এ R-3.4.4, rmarkdown_1.9, নিট্র_1.20 চালাচ্ছি। ভাবছেন কি সমস্যা হতে পারে?
জিওচেম বি

@ জিওচেমবি প্রয়োজনীয় ল্যাটেক্স প্যাকেজগুলি সঠিকভাবে ইনস্টল করা আছে? আমি সম্প্রতি টিনিটেক্সের সাথে সাফল্য পেয়েছি এবং এটির প্রস্তাব দিয়েছি
মেগাট্রন

আমি এগুলি ইনস্টল করার সময় তারা কোনও ত্রুটি ফেলেনি, তবে আমি ডাবল চেক করে প্রতিবেদন করব। মাথা আপ করার জন্য ধন্যবাদ, আমি এটি সম্পর্কে ভাবিনি এবং পিডিএফ / লেটেক্সে আউটপুট আনাতে নতুন।
জিওচেম বি

@ মেগাট্রন আমি টেক্স লাইভ ইউটিলিটি দিয়ে গিয়েছিলাম এবং ওবারডিক প্যাকেজটি ইনস্টল এবং আপডেট করেছি। সুতরাং প্রয়োজনীয়তা আছে, কিন্তু এখনও কোন পাশা। এমনকি আমি উপরের কোডটি অনুলিপি / আটকালেও ওরিয়েন্টেশনে কোনও পরিবর্তন হয় না।
জিওচেম বি

4
@ জিওচেমবি এই কোডটি ব্যবহার করে আমার একই সমস্যা হয়েছে। আমি সুমাত্রাপিডিএফ v3.1.1 এবং অ্যাডোব অ্যাক্রোব্যাট ডিসি এবং প্রোতে নথিটি দেখার চেষ্টা করেছি। ডকুমেন্টেশন থেকে ওবারডিক মিকটেক্সে অন্তর্ভুক্ত রয়েছে। আমার বোঝার অনুসারে আমার যদি মিকটেক্স ইনস্টল করা থাকে তবে পিডিএফএলসকেপটি ভাল হওয়া উচিত। কারও সমাধান পেলে কৌতুহল।
প্যাট্রিক

22

সর্বাধিক সাধারণ ক্ষেত্রে।

3 টি শর্ত আছে।

  1. প্রতিকৃতি মোডে সবকিছু।
  2. ল্যান্ডস্কেপ মোডে সবকিছু।
  3. প্রতিকৃতি এবং ল্যান্ডস্কেপ মোডের মিশ্রণ।

আসুন প্রতিটি শর্তে সংকীর্ণ করা যাক।

  1. প্রথমটি, বলুন যে আমাদের নীচের কোড দিয়ে একটি মার্কডাউন ডকুমেন্ট শুরু। আপনি যখন কোনও আরএমডি ফাইল তৈরি করবেন তখন আরস্তুডিওতে এটি ডিফল্ট সেটিংস। যখন আপনি এটি বুনন। এটি স্বয়ংক্রিয়ভাবে এটি কোনও প্রতিকৃতি মোড নিঃসন্দেহে ধরে নেবে।

    title: "Landscape and Portrait"
        author: "Jung-Han Wang"
        date: "Thursday, March 19, 2015"
        output: pdf_document
    
  2. আপনি যখন পিডিএফ ফাইলটি ল্যান্ডস্কেপ মোডে বুনতে চান, কেবলমাত্র আপনাকে যুক্ত করতে হবে ক্লাসোপশন: ল্যান্ডস্কেপ

        title: "Landscape and Portrait"
        author: "Jung-Han Wang"
        date: "Thursday, March 19, 2015"
        output: pdf_document
        classoption: landscape
    
  3. আপনি যদি উভয়ের মিশ্রণ চান তবে আপনার YAML তে .tex ফাইল যুক্ত করতে হবে। উপরে উল্লিখিত লিঙ্কটি উল্লেখ করে। আপনি .tex কোডটি এখানে ডাউনলোড করতে পারেন। http://goo.gl/cptOqg অথবা কেবল কোডটি অনুলিপি করুন এবং এটি শিরোনাম হিসাবে সংরক্ষণ করুন te নিশ্চিত হয়ে নিন যে আপনি এই দুটি কাজ করেছেন: টেক্সট ফাইলটি অনুলিপি করুন এবং এটি আরএমডি ফাইলের সাথে সরান। আরএমডি এর শুরুটি হতে হবে:

     title: "Landscape and Portrait"
        author: "Jung-Han Wang"
        date: "Thursday, March 19, 2015"
        output:
          pdf_document:
            includes:
              in_header: header.tex
    

আমি এই সমস্যাটি নিয়ে খেলে এবং বেশিরভাগ ব্যাপটিস্টের উত্তর থেকে উপকৃত হওয়ার পরে এই সংক্ষিপ্তসার।

আমি আমার ব্লগারে আমার ব্লগারে কিছু স্ন্যাপশট এবং উদাহরণ অন্তর্ভুক্ত করেছি

আশাকরি এটা সাহায্য করবে. শুভকামনা।


4
আপনার পদ্ধতির কাজ করে। এটি বোঝা সহজ করার জন্য, আমি মনে করি প্যান্ডোকের সমস্যাটি হ'ল আপনি যখন ম্যাক্রোগুলির পরিবর্তে পরিবেশ ব্যবহার করেন তখন অদ্ভুত হয়ে যায়। এই কারণেই আমি আপনাকে পরামর্শ দিয়েছিলাম যে, আমার শিরোনামে (পিডিফ্ল্যান্ডস্কেপ প্যাকেজ) \ নিউক্যামন্ড \ \ ব্ল্যান্ডস্কেপ \ \ \ শুরু {ল্যান্ডস্কেপ}} এবং \ নিউকমান্ড \ land এল্যান্ডস্কেপ \ \ \ শেষ \ ল্যান্ডস্কেপ}, অন্তর্ভুক্ত ছিল এবং এটি পুরোপুরি কার্যকর হয়েছিল। ধন্যবাদ!
gvegayon

4
আমি উপরের এই পদক্ষেপগুলি অনুসরণ করেছি (ব্লগটি সহায়তা করে দেখুন) এবং এটি দুর্দান্ত কাজ করেছে। ধন্যবাদ!
স্কট ওয়ার্ল্যান্ড

4

ব্যাপটিস্টে যেমন উল্লেখ করা হয়েছে, আপনি যদি কোনও ল্যাকটেক্স পরিবেশের মধ্যে আর কমান্ডগুলি আবদ্ধ করেন, প্যান্ডোক তাদের পার্স করবে না এবং উত্পন্ন ল্যাটেক্সে যেমন রাখবে তেমন: ত্রুটির কারণ এটিই। ব্যাপটিস্টের দুর্দান্ত এবং সাধারণ ফিক্সের বাইরেও আপনি xtableআর প্যাকেজটি ব্যবহার করতে পারেন , যা আর আউটপুট থেকে যৌন-সন্ধানী ল্যাটেক্স সারণী তৈরি করার সম্ভাবনা সরবরাহ করে। নিম্নলিখিত উদাহরণটি কাজ করার জন্য, আপনাকে ফাইলটিতে যুক্ত \usepackage{rotating}করতে header.texহবে:

---
title: "Mixing portrait and landscape"
output:
    pdf_document:
        keep_tex: true
        includes:
            in_header: header.tex
---
```{r, echo=FALSE}
library(xtable)
```

Portrait
```{r, results='asis', echo=FALSE}
print(xtable(summary(cars), caption="Landscape table"), comment=FALSE)
```

Landscape:
```{r, results='asis', echo=FALSE}
print(xtable(summary(cars), caption="Landscape table"),
      floating.environment="sidewaystable", comment=FALSE)
```

দ্বিতীয় টেবিলটি sidewaystableস্বাভাবিকের চেয়ে পরিবেশের মধ্যে মুদ্রিত হবে table: সুতরাং এটি পৃথক পৃষ্ঠায় ল্যান্ডস্কেপ মোডে মুদ্রিত হবে। নোট করুন যে lscapeপ্যাকেজ বা sidewaysপরিবেশে ল্যান্ডস্কেপ মোডে স্থাপন করা সারণী এবং চিত্রগুলি সর্বদা একটি পৃথক পৃষ্ঠায় স্থাপন করা হবে, এই অত্যন্ত গুরুত্বপূর্ণ নথির পৃষ্ঠা 91 দেখুন:

http://www.tex.ac.uk/tex-archive/info/epslatex/english/epslatex.pdf

যেহেতু আমি এটিকে কিছুটা বিরক্তিকর মনে করি, তাই আমি প্রতিকৃতি এবং ল্যান্ডস্কেপ উভয় টেবিলকে একই পৃষ্ঠার মধ্যে রাখার ব্যবস্থা করতে পেরেছি (প্রক্রিয়াটিতে আমার পুরো বিকাল নষ্ট করে):

---
title: "Mixing portrait and landscape"
output:
    pdf_document:
        keep_tex: true
        includes:
            in_header: header.tex
---
```{r, echo=FALSE}
library(xtable)
```

Portrait:
```{r, results='asis', echo=FALSE}
print(xtable(summary(cars), caption="Portrait table."), comment=FALSE)
```

Landscape:
```{r, results='asis', echo=FALSE}
cat(paste0(
    "\\begin{table}[ht]\\centering\\rotatebox{90}{",
    paste0(capture.output(
      print(xtable(summary(cars)), floating=FALSE, comment=FALSE)),
      collapse="\n"),
    "}\\caption{Landscape table.}\\end{table}"))
```

ল্যান্ডস্কেপ টেবিলের জন্য, আমি \rotateboxএখানে সরবরাহিত পরামর্শটি ব্যবহার করেছি :

http://en.wikibooks.org/wiki/LaTeX/Rotations

এটি কাজ করার জন্য, আমাকে কেবল tabularঅংশটির সাথে টেবিলের অংশটি উত্পন্ন করতে হবে print(xtable(..., তারপরে আমাকে আউটপুট ক্যাপচার করতে হবে এবং "ম্যানুয়ালি" এটিকে tableএবং rotateboxকমান্ডগুলির সাথে ঘিরে ফেলতে হবে , সবকিছুকে স্ট্রিং আর আউটপুটে রূপান্তর করতে হবে যাতে প্যান্ডোকটি দেখতে না পায় এগুলি ল্যাকএক্স পরিবেশ হিসাবে। একটি শুদ্ধ rmarkdown সমাধানের জন্য ... শুভকামনা!


এই পৃষ্ঠায় এটিই আমার পক্ষে কাজ করেছে। ধন্যবাদ, রেনাতো!
স্টুয়ার্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.