Birkaç kod parçasını kısa bir şekilde görüntüleme


9

Ben blogdownhangi R kodu ve Stata kodu karşılaştırmak ile bir blog oluşturuyorum . Kullanıcı R ve Stata nasıl yapıldığını karşılaştırabilirsiniz böylece her iki kodu göstermek istiyorum. Ancak, iki veya daha fazla parçayı arka arkaya koymak (R kodu, Stata + çıkış kodu) okumayı oldukça rahatsız eder.

Birkaç mizanpajı dahil etmek için birkaç düzen aklıma geldi, ancak bunların zaten uygulandığını veya hatta mümkün olup olmadığını bilmiyorum.


Parçaları görüntülemek / gizlemek için bir düğmeye sahip olun ( yığın başına bir düğme )

Fikirlerden biri:

  • makalede varsayılan olarak görünen R kodu parçaları,
  • Stata kodu yığınlar varsayılan olarak görünmez ancak kullanıcı bir düğmeyi tıkladığında görünür

Bu kişi ve bu kişi , kod yığınlarını blogdown'da katlamayı başardı, ancak görünüşe göre varsayılan olarak her parçaları gizliyor veya gösteriyor. Varsayılan olarak yalnızca bazı parçaları nasıl gizleyebilirim? Kod yığınını gizleyen veya gösteren bir seçenek var mı (seçenekler evalgibi echo...) blogdown?


"Sekmeli" parçalar

Bu bölümün başlığı kendisi için konuşur: bir koddan diğerine geçebilmemiz için öbekte sekmeler olması mümkün müdür (örneğin web tarayıcılarındaki sekmeler gibi)?


İki parçayı yan yana göster

Bazı blogdowntemalarda (belki de hepsini bilmiyorum), genişlik oldukça azalır ve yanlarda kullanılmayan bir alan vardır. Bu nedenle, bir makalenin bazı kısımlarındaki genişliği artırmak ve iki parçayı yan yana görüntülemek mümkün müdür?

Bu mizanpajlardan birinin gerçekleşip gerçekleşemeyeceği hakkında bir fikriniz var blogdownmı?


2
Python ve R yan yana bir yerde görünüyordu, çoğaltamadım, birinin bunu çözmesi için dua ediyorum, bu mümkün olsaydı gerçekten gelişecek bir blogum var
Bruno

1
blogdownCSS eklemenize izin veriyor mu ? CSS kullanarak iki kod bloğu oluşturabilir ve yan yana koyabilirsiniz. CSS ile parçaları da görüntüleyebilir veya gizleyebilirsiniz ve sekmeleri yapabilirsiniz, ancak bu benim güçlü noktam değil.
BeastCoder

@BeastCoder blogdownCSS kullanabileceğini düşünüyorum ( buraya bakın ) ama hiç kullanmadım, bu yüzden deneyeceğim ama bunu başarabileceğimi sanmıyorum
bretauv

@bretauv Eğer buna değer olduğunu anlayabilirseniz, bu yolu kullanmak istiyorsanız sizi tamamen çalıştırabilecek üç öğretici bırakabileceğimi düşünüyorum.
BeastCoder

1. youtu.be/UB1O30fR-EE (bu bir HTML çarpışma kursu) 2. youtu.be/yfoY53QXEnI (bu bir CSS çarpışma kursu) 3. youtu.be/JJSoEo8JSnc (flexblock) Bu şeyler sizi alabilmeli yan yana kod yığınları ama onlar da size her zaman yardımcı olacak gelecekteki bilgileri sağlayacaktır. Kaybolan ve yeniden görünen kodun eklenmesi daha zor olabilir, ancak başlamanız için bir şeyin bağlantısını istiyorsanız bunu bana bildirin. Blogdown hakkında fazla bilgim yok ama CSS'ye ihtiyacınız olmayan başka bir yol olabilir. Her iki durumda da, CSS'yi tavsiye ederim
BeastCoder

Yanıtlar:


0

Tamam, kısmi bir cevap. Birkaç parçayı yan yana koyabilirdim, ancak yazımdaki diğer önerileri nasıl gerçekleştireceğimizi bilmiyorum.

Ben de öyle yaptım. Bu sayfaya dayanarak, dosyama blogumdaki .Rmarkdownmakalelerden birini içeren bazı CSS kodları koydum .

<style>
.flex-container {
  display: flex;
  flex-wrap: nowrap;
  justify-content: center;
  overflow: visible;
}

.flex-container > div {
  width: 200px;
  margin: 10px;
  text-align: left;
  line-height: 75px;
  font-size: 30px;
}
</style>
<div class="flex-container">
```{r message = FALSE}
head(mtcars)
```
</div>

Burada, kodu head(mtcars)ve çıktısını yan yana iki parçaya koyacaktır . Daha önce başka bir yığın koyarsanız </div>, sıra şu olacaktır: yığın, çıktı, yığın, çıktı, vb. İki (veya daha fazla) sütunun görüntülenmesini özelleştiren birçok seçenek vardır. Ancak yapamayacağım birkaç şey var:

  1. Üç parça sipariş etmenin mümkün olup olmadığını bilmiyorum. Örneğin, ile bir yığın eklerseniz head(mtcars), sıra şu olacaktır: yığın1, yığın1, yığın2. Yeniden düzenlenebilir olup olmadığını bilmiyorum: chunk1, chunk2, chunk1 çıkışı.

  2. Bu kodu ayrı bir CSS dosyasına koyarsam, ilgili yığın normal metinmiş gibi görüntülenir. Bu kodu harici bir CSS dosyasına nasıl ekleyebilirim? Bu açıklanmıştır biliyoruz blogdown'ın kitabında , ama sadece o işi yapamadı. Şimdiye kadar denedim:

    • (arasına Yukarıdaki kodu koymak <style>ve </style>ben adlı bir dosyada) main.cssve ben yerleştirdiğithemes/tale-hugo/static/css

    • aşağıdaki kodu dosyamın başına koy .Rmarkdown. Ben dosyaya benim mutlak yol ile yolunu değiştirmek çalıştı main.cssve ben de yerine sadece çalıştı style.csstarafından main.cssaşağıdaki kodu, ancak başarılı olamadı

      <html>
          <link rel="stylesheet" href="/css/style.css" />
      </html>
      
    • Ben de customCSS yolu koymak için çalıştı config.tomlama işe yaramadı

  3. CSS işe yaradığından, onunla sekmeler oluşturmanın mümkün olup olmadığını görmek istedim. Gerçekten mümkündür, ancak bazı JavaScript kodu gerektirir ve daha önce hiç kullanmadım, bu yüzden birileri bu konuda yardımcı olabilirse, şimdiden teşekkürler.

Temel olarak, bu çözümler bulursam güncellenebilecek bir çalışma temelidir, ancak bu sorunların bazılarını nasıl çözeceğinizi biliyorsanız, tereddüt etmeyin.


@BeastCoder Şimdiye kadar yaptığım şey
bretauv

0

Önceki cevabım biraz dağınık ve çok detaylı olmadığından, yapmak istediğim şeyle iyi olan yeni bir cevap verdim (yani, bazı kod yığınlarını katlama imkanı).

Çözüm, bu cevapta belirtildiği gibi Jonathan Sidi'nin ayrıntılar paketini kullanmaktır . Başlangıçta, bu paketin amacı, R Markdown ile yapılan HTML belgelerinde (ve dolayısıyla R Blogdown ile) çok fazla yer kaplayan bazı çıktıları gizlemekti . İşte bir örnek (paketin web sitesinden alınmıştır):sessionInfo

---
title: "Test"
output: html_document
---

```{r}
library(details)

sessioninfo::session_info()%>%
  details::details(summary = 'current session info')
```

Ancak, gizlemek istediğim, bazı R kodunun çıktısı değil, Stata kodunun (çalıştırılması amaçlanmayan) değil, böylece okuyucuların istedikleri takdirde R kodunu Stata koduyla karşılaştırabilmeleri. Bu nedenle, bunu yapmak için bazı HTML kullanmalıyız:

---
title: "Test"
output: html_document
---

## Regression with R and Stata

```{r, eval=FALSE}
lm(mpg ~ drat, data = mtcars)
```

<details>
<summary> Stata </summary>
```stata
regress y x
```
</details>

Şimdi, okuyucular istedikleri Stata kodunu görebilirler ve istemeyenlerin çok fazla kod parçası tarafından dikkati dağılmaz. Bu, Blogdown makaleleri için de geçerlidir (bir web sitesinde "sadece" bazı R Markdown olduğu için).

Diğer özellikler ( örneğin gizli parçaları özelleştirin ) paketin web sitesinde ayrıntılı olarak açıklanmıştır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.