간결한 방식으로 여러 코드 청크 표시


9

blogdownR 코드와 Stata 코드를 비교 하는 블로그를 만들고 있습니다. 사용자가 R과 Stata에서 수행 된 방식을 비교할 수 있도록 두 코드를 모두 표시하고 싶습니다. Howewer는 두 개 이상의 청크를 한 줄에 넣으면 (R 코드, Stata + 출력 코드) 읽기가 매우 불편합니다.

몇 가지 레이아웃이 여러 청크를 포함하도록 생각되었지만 이미 구현되었는지 또는 가능한지 모르겠습니다.


청크 표시 / 숨기기 버튼 ( 청크 당 하나의 버튼 )

한 가지 아이디어는 다음과 같습니다.

  • 기사에 기본적으로 표시되는 R 코드 청크
  • Stata 코드 청크는 기본적으로 보이지 않지만 사용자가 버튼을 클릭하면 볼 수 있습니다

이 사람이 사람은 blogdown에 자신의 코드 청크를 접는에 성공하지만 분명히 그것은 기본적으로 모든 청크를 성인물을 보여줍니다. 기본적으로 일부 청크 만 숨기려면 어떻게해야합니까? 코드 청크를 숨기거나 표시 하는 옵션 (옵션 evalecho)이 blogdown있습니까?


"탭"이있는 청크

이 부분의 제목은 그 자체로 말합니다 : 예를 들어 웹 브라우저의 탭과 같이 한 코드에서 다른 코드로 전환 할 수 있도록 청크에 탭을 가질 수 있습니까?


두 개의 덩어리를 나란히 표시

일부 blogdown테마 (아마도 나는 모릅니다)에서 너비가 상당히 줄어들고 측면에 사용되지 않는 공간이 있습니다. 따라서, 물품의 일부 부분에서 폭을 증가시키고 두 개의 덩어리를 나란히 표시 할 수 있습니까?

이 레이아웃 중 하나를 실현할 수 있다면 어떤 아이디어 blogdown입니까?


2
나는 누군가가이 문제를 해결하기 위해, 나는 이것이 가능했던 경우 정말 개선 할 블로그가기도, 파이썬과 측면 곳으로 R 측이 그것을 복제 할 수있는 것이
브루노

1
않습니다 blogdown당신이 CSS를 추가 할 수 있도록? CSS를 사용하면 두 개의 코드 블록을 만들어 나란히 놓을 수 있습니다. CSS를 사용하면 청크를 표시하거나 숨길 수 있으며 탭을 수행 할 수는 있지만 내 장점은 아닙니다.
BeastCoder

@BeastCoder blogdownCSS를 사용할 수 있다고 생각 하지만 ( 여기 참조 ) 사용해 본 적이 없어서 시도 할 수는 있지만 이것을 달성 할 수는 없다고 생각합니다
bretauv

@ bretauv 나는 당신이 그것을 알아낼 수 있다면 가치가 있다고 생각한다면, 당신이 그 길을 가고 싶다면 완전히 시작하고 실행할 수있는 세 가지 자습서를 남길 수 있다고 생각합니다.
BeastCoder

1. youtu.be/UB1O30fR-EE (는 HTML 충돌 코스입니다) 2. youtu.be/yfoY53QXEnI (CSS의 충돌 코스입니다) 3. youtu.be/JJSoEo8JSnc (flexblock) 그 일이 당신을 얻을 수있을 것입니다 나란히 코드 덩어리가 있지만 항상 도움이 될 미래 정보를 제공합니다. 사라지고 다시 나타나는 코드를 추가하는 것은 어려울 수 있지만 시작할 링크를 원하면 알려주십시오. 블로그에 익숙하지 않지만 CSS가 필요없는 다른 방법이 있습니다. 어느 쪽이든, 나는 CSS 권 해드립니다
BeastCoder

답변:


0

여기에 부분 답변이 있습니다. 나는 몇 개의 덩어리를 나란히 넣을 수는 있지만 내 게시물에서 다른 제안을 실현하는 방법을 모르겠습니다.

이것이 내가 한 일입니다. 이 페이지를 기반으로 .Rmarkdown블로그의 기사 중 하나를 포함하는 CSS 코드를 파일 에 넣었습니다 .

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

여기에서는 코드 head(mtcars)와 출력을 두 개의 덩어리로 나란히 배치합니다. 다른 청크를 앞에두면 </div>청크, 출력, 청크, 출력 등의 순서가됩니다. 두 개 이상의 열 표시를 사용자 정의하는 옵션이 많이 있습니다. 그러나 내가 할 수 없었던 몇 가지가 있습니다.

  1. 세 개의 덩어리를 주문할 수 있는지 모르겠습니다. 예를 들어,로 청크 다음에 청크를 추가하면 head(mtcars)chunk1, chunk1의 출력, chunk2의 순서가됩니다. chunk1, chunk2, chunk1의 출력에서 ​​재 배열 될 수 있는지 모르겠습니다.

  2. 이 코드를 별도의 CSS 파일에 넣으면 관련 청크가 일반 텍스트 인 것처럼 표시됩니다. 이 코드를 외부 CSS 파일에 어떻게 넣을 수 있습니까? 나는 이것이 설명되어 있음을 알 blogdown , 그러나 나는 단지 그것을 작품을 만들 수 없습니다. 내가 지금까지 시도한 것은 :

    • (사이에 위의 코드를 넣어 <style></style>I라는 것을 파일에) main.css난에 배치하는themes/tale-hugo/static/css

    • .Rmarkdown파일 의 시작 부분에 아래 코드를 넣으십시오 . 나는 파일에 내 절대 경로로 경로를 대체하기 위해 노력 main.css하고 또한 대체 단지 노력 style.css에 의해 main.css아래의 코드에서,하지만 성공하지

      <html>
          <link rel="stylesheet" href="/css/style.css" />
      </html>
    • 또한 customCSS에 경로를 넣으려고했지만 config.toml작동하지 않았습니다.

  3. CSS가 작동하는 것처럼 보였으므로 탭을 만들 수 있는지 확인하고 싶었습니다. 실제로 가능 하지만 일부 JavaScript 코드가 필요하며 누군가가 그것을 도울 수 있다면 미리 감사드립니다.

기본적으로 이것은 해결책을 찾으면 업데이트 될 수있는 작동 기반이지만 이러한 문제 중 일부를 해결하는 방법을 알고 있다면 망설이지 마십시오.


@BeastCoder 여기에 내가 한 일이 있습니다
bretauv

0

이전 답변은 약간 지저분하고 상세하지 않았으므로 내가하고 싶은 일에 잘 맞는 새로운 답변을 만듭니다 (즉, 일부 코드 덩어리를 접을 가능성이 있음).

해결책은 이 답변에서 지적한 것처럼 Jonathan Sidi의 세부 정보 패키지 를 사용 하는 것 입니다. 원래이 패키지의 목적은 sessionInfoR Markdown으로 작성된 HTML 문서 (및 R Blogdown에서도) 와 같이 많은 공간을 차지하는 일부 출력을 숨기는 것이 었습니다. 다음은 패키지 웹 사이트에서 가져온 예입니다.

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

```{r}
library(details)

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

그러나 숨기고 싶은 것은 일부 R 코드의 출력이 아니라 Stata 코드 (실행되지 않아야 함)이므로 독자는 R 코드를 Stata 코드와 비교할 수 있습니다. 따라서 HTML을 사용해야합니다.

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

이제 독자는 원하는 경우 Stata 코드를 볼 수 있고 원하지 않는 사람들은 너무 많은 코드 청크로 인해 산만하지 않습니다. 이것은 블로그 다운 기사에서도 작동합니다 (웹 사이트의 일부 R 마크 다운이기 때문에).

더 많은 기능 ( 예 : 숨겨진 청크 사용자 정의 )은 패키지 웹 사이트에 자세히 설명되어 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.