układy dwukolumnowe w prezentacjach RStudio / slidify / pandoc

Staram się wymyślić dobry system do generowania slajdów i towarzyszących ulotek. Układ idealny miałby następujące właściwości:

    [16]} piękne zarówno w układach prezentacji (PDF/HTML), jak i rozdawania (PDF) (rozdawania powinny mieć miejsce na robienie notatek)
  • embedded r, figures, other JPG / PNG pictures, etc.
  • łatwy w komponowaniu
  • budowanie przy użyciu narzędzi wiersza poleceń
  • Bibliografia
  • pandoc separator slajdów format (automatycznie generuje nowy slajd po nagłówkach określonego poziomu) jest preferowany
  • mogę żyć z odrobiną dodatkowego przetwarzania (np. przez sed), ale wolałbym nie pisać ogromnej infrastruktury
  • dwukolumnowe układy : jest więc post o tym, jak uzyskać wielokolumnowe slajdy z pandoc , ale jest to raczej LaTeX-a nie HTML - oriented.
  • możliwość dostosowania rozmiarów osadzonych obrazów (innych niż ryciny generowane przez R) i kolumn szerokość w locie

Oto, co odkryłem do tej pory o różnych opcjach:

  • Slidify :
    • nie obsługuje formatu pandoc slide separator, chociaż istnieje obejście
    • sugestią tworzenia ulotek jest wydruk do PDF; chciałbym zostawić miejsce na notatki itp. (Prawdopodobnie mógłbym wymyślić sposób, aby to zrobić, używając czegoś takiego jak PDFtk lub psnup ...)
  • RStudio prezentacje (.Rpres Pliki):
    • robi wiele rzeczy ładnie, w tym wiele kolumn o określonych szerokościach
    • nie obsługuje formatu separatora slajdów
    • Nie wiem, co się dzieje pod maską. Istnieje dokumentacja RStudio , która opisuje proces tłumaczenia dla zwykłego HTML, ale wydaje się, że nie obejmuje formatu prezentacji R (który nie jest taki sam). (Wcześniej zainwestowałem trochę wysiłku w zastanawiając się, jak uzyskać RStudio-jak wyjście poprzez pandoc ...), co oznacza, że nie mogę generować slajdów itp. z linii poleceń.
  • Wersja rozwojowa RStudio (Stan na Marzec 2014) jest dołączona do Pandoc i wersji 2 rmarkdown. Rozwiązuje wiele z powyższych problemów za pomocą formatu .Rpres.
  • pandoc: może być jedynym tłumaczem markdown, który ma funkcje takie jak Przypisy, obsługa bibliografii itp.. Można również użyć pandoc do generowania lateksu przy użyciu klasy tufte-handout , która spełnia moje kryteria piękna.
    • niestety, wydaje się, że nie ma wbudowanej obsługi formatu dwukolumnowego. przykład HTML5 Yihui Xie nie pokazuje żadnych dwukolumnowych przykładów i twierdzi (na slajdzie 5), że kliknięcie przycisku "Knitt HTML" w RStudio jest równoważne pandoc -s -S -i -t dzslides --mathjax knitr-slides.md -o knitr-slides.html, ale wydaje się, że tak nie jest ...
  • LaTeX / beamer: mógłbym po prostu komponować w Rnw (Knitr-dialekt Sweave), a nie R markdown na początek. To da mi ostateczny elastyczność ...
    • pomimo wielu lat używania lateksu uważam, że skład lateksu jest bardziej bolesny niż skład markdown.
  • Po tym wszystkim, moje konkretne pytanie brzmi: jaki jest najlepszy (najłatwiejszy) sposób wygenerowania dwukolumnowego układu dla wyjścia HTML?

    Wszelkie inne rady również będą mile widziane.
    Author: Community, 2013-12-31

    5 answers

    To jest stare Q, ale ostatnio dręczyło mnie podobne pytanie, oto co znalazłem:

    Używając formatu RPres, można określić dwie kolumny w ten sposób (details ). Zauważ, że RPres może być konwertowany tylko do HTML poprzez kliknięcie przycisku w RStudio, nie wydaje się, aby była jakaś metoda wiersza poleceń, co jest trochę irytujące. Pomimo, że powiedziałbym, że jest to obecnie najprostsza i najbardziej elastyczna metoda uzyskiwania kolumn slajdów z markdown:

    === 
    
    Two Column Layout  
    ===
    
    This slide has two columns
    
    ***
    
    ```{r, echo=FALSE}
    plot(cars)
    ```
    

    Tutaj wpisz opis obrazka

    Pewną elastyczność zapewnia Regulacja proporcji kolumn:

    ===
    
    Two Column Layout  
    ===
    left: 30%
    This slide has two columns
    
    ***
    
    ```{r, echo=FALSE}
    plot(cars)
    ```
    

    Tutaj wpisz opis obrazka

    Z rmarkdown możemy uzyskać dwie kolumny, ale bez kontroli nad tym, gdzie jest przerwa, co jest trochę problemem:

    ---
    output: ioslides_presentation
    ---
    
    
    ## Two Column Layout  {.columns-2}
    
    This slide has two columns
    
    
    ```{r, echo=FALSE}
    plot(cars)
    ```
    

    Tutaj wpisz opis obrazka

    Możemy również mieszać markdown i LaTeX w pliku Rmd używając formatu beamer_presentation w RStudio, aby uzyskać dwie takie kolumny, ale nie możemy uruchomić żadnego kodu w żadnej kolumnie, co jest ograniczeniem:

    ---
    output: beamer_presentation
    ---
    
    Two Column Layout 
    -------
    
    \begin{columns}
    \begin{column}{0.48\textwidth}
    This slide has two columns
    \end{column}
    \begin{column}{0.48\textwidth}
    If I put any code in here I get an error, see
    https://support.rstudio.com/hc/communities/public/questions/202717656-Can-we-have-columns-in-rmarkdown-beamer-presentations-
    \end{column}
    \end{columns}
    

    Tutaj wpisz opis obrazka

    Wydaje się, że zwykły RNW Latex doc jest najlepszym sposobem, aby uzyskać kolumny, jeśli chcesz użyć LaTex, a nie tej hybrydy markdown (por. dwukolumnowy beamer / sweave slide z Grafiką siatki )

    We wszystkich powyższych obrazkach można umieścić w kolumnie.

    Strona slidify ma instrukcje dotyczące tworzenia dwóch kolumn tutaj: http://slidify.org/customize.html ale nie jest jasne, co musi znaleźć się w folderze assets/layouts, aby to działało

     24
    Author: Ben,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2017-05-23 11:54:41

    Mam teraz to, co uważam za rozsądne rozwiązanie, które powinno mieć zastosowanie przynajmniej do rozwiązań opartych na ioslides, a może (?) do innych formatów opartych na HTML5. Zaczynając tutaj , dodałem

    <style>
    div#before-column p.forceBreak {
        break-before: column;
    }
    div#after-column p.forceBreak {
        break-after: column;
    }
    </style>
    

    Do początku mojego dokumentu; następnie umieszczenie {[4] } wewnątrz slajdu z {.columns-2} łamie kolumnę w tym punkcie, np.

    ## Latin hypercube sampling {.columns-2}
    
    - sample evenly, randomly across (potentially many) uncertain parameters
    
    <p class="forceBreak"></p>
    
    ![](LHScrop.png)
    [User:Saittam, Wikipedia](https://commons.wikimedia.org/wiki/File:LHSsampling.png#/media/File:LHSsampling.png)
    
    Może jest jeszcze lepszy sposób, ale to nie jest zbyt bolesne.

    @ ChrisMerkord zaznacza w komentarzach, że

    .forceBreak { -webkit-column-break-after: always; break-after: column; }
    

    Pracował zamiast (nie miałem sprawdzone ...)

     11
    Author: Ben Bolker,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2017-02-10 16:57:20

    Wpadłem na pomysł z Tutaj , podstawowe rozwiązania to:


    ### Function *inner_join*
    . . .
    
    `<div style="float: left; width: 50%;">`
    ``` {r, echo = FALSE, results = 'markup', eval = TRUE}
    kable(cbind(A,B))                                    
    ```
    `</div>`
    `<div style="float: right; width: 50%;">`
    ```{r, echo = TRUE, results = 'markup', eval = TRUE}
    inner_join(A,B, by="C")
    ```
    `</div>`
    

     5
    Author: Rafa,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2016-09-20 07:26:21

    Istniejeobejście błędu projektora.

    W skrócie: błąd związany jest z silnikiem pandoc conversion engine, który traktuje wszystko pomiędzy \begin{...} i \end{...}jako TeX. Można tego uniknąć, podając nową definicję begin{column} i end{column} w nagłówku yaml.

    Twórz stronę mystyle.tex i napisz tam:

    \def\begincols{\begin{columns}}
    \def\begincol{\begin{column}}
    \def\endcol{\end{column}}
    \def\endcols{\end{columns}}
    

    W pliku Rmd użyj tych nowych definicji

    ---
    output:
      beamer_presentation:
        includes:
          in_header: mystyle.tex
    ---
    
    
    Two Column Layout 
    -------
    
    \begincols
      \begincol{.48\textwidth}
    
    This slide has two columns.
    
      \endcol
    \begincol{.48\textwidth}
    
    ```{r}
    #No error here i can run any r code
    plot(cars)
    ```
    
      \endcol
    \endcols
    

    I dostajesz: Tutaj wpisz opis obrazka

     5
    Author: Mikael Jumppanen,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2017-11-21 08:35:59

    Do tej pory nie byłem w stanie zrobić lepiej niż hakowanie własnego trochę znaczników na górze rmd format: nazywam mój plik źródłowy rmd0 i uruchomić skrypt zawierający to sed tidbit przetłumaczyć go na rmd przed wywołaniem knit:

    sed -e 's/BEGIN2COLS\(.*\)/<table><tr><td style="vertical-align:top; width=50%" \1>/' \
        -e 's/SWITCH2COLS/<\/td><td style="vertical-align:top">/' \
        -e 's/END2COLS/<\/td><\/tr><\/table>/' ...
    
    Jest kilka powodów, dla których mi się to nie podoba. (1) to jest brzydkie i celowe, a ja nie mam zbyt dobrego sposobu, aby dopuszczać opcjonalne argumenty (np. względne szerokości kolumn, wyrównanie itp.). (2) musi być poprawiony dla każdego wyjścia formatowanie (np. gdybym chciał wyjście LaTeX/beamer musiałbym zamiast tego zastąpić \begin{columns}\begin{column}{5cm} ... \end{column}\begin{column}{5cm} ... \end{column}\end{columns} (Jak się okazuje chcę zignorować formatowanie dwukolumnowe, gdy robię materiały w formacie LaTeX, więc jest to trochę łatwiejsze, ale nadal jest brzydkie).

    Slidify może być jeszcze odpowiedzią.

     3
    Author: Ben Bolker,
    Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
    2014-01-13 23:14:25