Ipython: Markdown ์…€์—์„œ Python ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ฐธ์กฐ ํ—ˆ์šฉ

์— ๋งŒ๋“  2013๋…„ 02์›” 20์ผ  ยท  49์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ipython/ipython

PR #2592์—์„œ @Carreau ๋Š” Markdown ์…€์—์„œ Python ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ตฌ๋ฌธ์„ {{x}} ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ์•„์ด๋””์–ด๋ฅผ ์ข‹์•„ํ•˜์ง€๋งŒ ํ•ด๊ฒฐํ•ด์•ผ ํ•  ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • [ ] ์–ด๋–ค ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ? {{}} ๋งŒ์กฑํ•ฉ๋‹ˆ๊นŒ?
  • [ ] ๋ผํ…์Šค ๋ฐ ๊ธ€์„ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ๊ฐ•๋ ฅํ•˜๊ณ  ์ •์ƒ์ ์ธ ๋ฐฉ์‹์œผ๋กœ Markdown์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ์ˆœ์ˆ˜ํ•œ Markdown์—์„œ ์„œ์„œํžˆ ๋ฒ—์–ด๋‚˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด๋Š” ์ •๋ง ์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋…ธํŠธ๋ถ ํ˜•์‹์ด ๋งค์šฐ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์ž‘๋™ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋ฉฐ ์ž์ฒด Markdown ๊ตฌ๋ฌธ์„ ๊ฐ–๋Š” ๊ฒƒ์€ ๋‚˜์œ ์ƒ๊ฐ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.
  • [ ] ์˜ค๋ฅ˜, ์ฆ‰ ์ •์˜๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•.
  • [ ] ๋‹ค๋ฅธ ๋””์Šคํ”Œ๋ ˆ์ด ํ˜•์‹์— ๋Œ€ํ•ด ๋ฌด์—‡์„ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๊นŒ? ํ…์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ํ˜•์‹์„ ํ—ˆ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ์œ„ํ—˜ํ•œ ๊ฒฝ๋กœ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.
closed-pr notebook

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด ๊ธฐ๋Šฅ์€ Rmarkdown์—์„œ ์˜จ ์‚ฌ๋žŒ์—๊ฒŒ ์ •๋ง ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. R์€ ๋ฉ‹์ง„ ๋ณด๊ณ ์„œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ํ›จ์”ฌ ๋” ๋‚˜์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  49 ๋Œ“๊ธ€

๊ทธ๋ž˜์„œ, ์ด๊ฒƒ์€ ์ฃฝ์—ˆ์Šต๋‹ˆ๊นŒ? ์ด์ „ ์Šค๋ ˆ๋“œ๊ฐ€ ์ง€์ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๊นŒ? ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•  ๊ธฐ์ˆ ์ด ์žˆ์—ˆ์œผ๋ฉด ํ•˜๋Š” ๋ฐ”๋žŒ์— ๋ฒ”ํ”„ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค (๋‚˜๋Š” ์—†์Šต๋‹ˆ๋‹ค)ํ•˜์ง€๋งŒ ๋‚˜๋Š” ํ™•์‹คํžˆ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค ...

์ฃฝ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋จผ์ € ๋ช‡ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ ์— ๋Œ€ํ•ด ์—ฌ๊ธฐ ์™€ ์—ฌ๊ธฐ ์—์„œ ์ด์ค‘ ์ค‘๋ณต ์ด๋ผ๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ SO ์—์„œ ์Šต๋‹ˆ๋‹ค .

๋‚ด 2c๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค

  • Jinja ๊ตฌ๋ฌธ์€ ํ›Œ๋ฅญํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๊ฐ„๋‹จํžˆ ๋ณด๋ฉด ๋งˆํฌ๋‹ค์šด ์— '์ˆœ์ˆ˜'๊ฐ€ ์—†๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ž˜ ํ™•๋ฆฝ๋œ ๊ตฌํ˜„(:octocat: github์ด ์ข‹์€ ๊ฒƒ)์˜ ๋ชจ๋“  ํ˜•์‹ ์ง€์ • ๊ทœ์น™์„ ๋”ฐ๋ž๋‹ค๋ฉด ์ฃผ์ž… ๋ฐฉ๋ฒ•์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋งˆํฌ ๋‹ค์šด ๋ฌธ์ œ.
  • ์˜ค๋ฅ˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? [invisible (์•„๋ฌด ์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š์Œ), error ๋‹จ์–ด, or a dirty great stack trace ] ์˜ต์…˜
  • ํ…์ŠคํŠธ ์‘๋‹ต์ธ ํ•œ ๋งˆํฌ๋‹ค์šด ๋ Œ๋”๋Ÿฌ์— ์ „๋‹ฌ๋˜๊ธฐ ์ „์— ์ฃผ์ž…๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ html ๋˜๋Š” ๋” ๋งŽ์€ ๋งˆํฌ๋‹ค์šด์„ ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

ํŠน์ • ๊ตฌ๋ฌธ์„ ์˜นํ˜ธํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ({{}}๊ฐ€ ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค), ๋‹ค์Œ์€ R์— ๋Œ€ํ•œ ๋น„๊ต ๊ฐ€๋Šฅํ•œ ๋””์ž์ธ์ž…๋‹ˆ๋‹ค. http://www.rstudio.com/ide/docs/authoring/using_markdown ).

๋ฃจ๋‚˜๋งˆํฌ ์‚ฌ์šฉ

:+1:

:+1:, ์ด๊ฒƒ์€ ๋งค์šฐ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค!

http://blog.rstudio.org/2014/06/18/r-markdown-v2/ ์™€ ๋™์ผํ•œ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. R ์Šคํƒ€์ผ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ, ์ฆ‰ ๊ฐ๊ฐ ๋‹จ์ผ ๋ฐ ์‚ผ์ค‘ ๋ฐฑํ‹ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ ํ‘œ์‹œ(์˜ˆ some code snippet/example )์™€ _evaluating_ ์ฝ”๋“œ ๋ฐ ๊ฒฐ๊ณผ ํ‘œ์‹œ(์˜ˆ: ์˜ˆ: my_var ) - ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋งค์šฐ ์‹ค์šฉ์ ์ด์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•œ๋‹ค๋ฉด).

์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” "_2014๋…„ Morgan County์˜ ํ‰๊ท  ์‹ค์—…๋ฅ ์€ 8.4%๋กœ 2009๋…„์˜ 10.3%์—์„œ ๊ฐ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค._"์™€ ๊ฐ™์ด ๊ณ„์‚ฐ๋œ ๊ฐ’์ด ํฌํ•จ๋œ ๋…ธํŠธ๋ถ ์‚ฐ๋ฌธ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ ๋ฐฑ๋ถ„์œจ๊ณผ ์—ฐ๋„๊ฐ€ ๋‹ค์Œ์—์„œ ๊ณ„์‚ฐ๋˜๋Š” ๊ฒƒ์„ ์ƒ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ.

๋” ๊ด‘๋ฒ”์œ„ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” "์Šค๋งˆํŠธ ๋ฌธ์„œ"๋กœ, ๋ฐ์ดํ„ฐ์—์„œ ํ…์ŠคํŠธ์™€ ๊ทธ๋ž˜ํ”ฝ์ด ์ž๋™์œผ๋กœ (์žฌ) ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค(๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์ˆจ๊ธธ ์ˆ˜ ์žˆ์Œ).

์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” rstudio์˜ "knitr" ๋ชจ๋ธ์„ ์ •๋ง ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค(ํ•˜๋‚˜์˜ ๋งˆํฌ๋‹ค์šด ๋ฌธ์„œ, ์ฝ”๋“œ ๋ธ”๋ก์ด ํ•ด์„๋˜๊ณ , ๋งˆํฌ๋‹ค์šด์—์„œ ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ -> PDF/html/...๋กœ ๋ณ€ํ™˜๋˜์–ด ์ €๋„ ๊ธฐ์‚ฌ๋กœ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋…ธํŠธ๋ถ๊ณผ ๋‹ค๋ฆ„) ๋…ธํŠธ๋ถ์ด ์—ฌ๋Ÿฌ ์…€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถœ๋ ฅ์ด ํ‘œ์‹œ๋˜๋Š”์ง€ ์—ฌ๋ถ€์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ…์ŠคํŠธ์— ๊ฐ’์ด ์–ด๋–ป๊ฒŒ ํฌํ•จ๋˜๋Š”์ง€๋Š” ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์ง€๋งŒ R(nitr/rstudio ํฌํ•จ)๊ณผ ipython์ด ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜๋Š” ruby โ€‹โ€‹๋˜๋Š” bash์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ #{varname ๋˜๋Š” statement}๋Š”
๋ฌธ์ž์—ด ๋‚ด์—์„œ ํ˜ผํ•ฉ๋ฉ๋‹ˆ๋‹ค.

  1. 2014๋…„ 6์›” 20:27 skrev "Jan Schulz" [email protected] fรธlgende:

์ €๋Š” rstudio์˜ "knitr" ๋ชจ๋ธ์„ ์ •๋ง ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค(ํ•˜๋‚˜์˜ ๋งˆํฌ๋‹ค์šด ๋ฌธ์„œ, ์ฝ”๋“œ
๋ธ”๋ก์ด ํ•ด์„๋˜๊ณ  ๋งˆํฌ๋‹ค์šด์—์„œ ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ -> ๋ณ€ํ™˜๋จ
์ €๋„ ๊ธฐ์‚ฌ๋กœ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ๋Š” PDF/html/...๋กœ. ๋‹ค๋ฅธ
๋…ธํŠธ๋ถ์€ ์—ฌ๋Ÿฌ ์…€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
์ถœ๋ ฅ์ด ํ‘œ์‹œ๋˜๋Š”์ง€ ์—ฌ๋ถ€์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค).

๊ฐ’์ด ํ…์ŠคํŠธ์— ์–ด๋–ป๊ฒŒ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ์ƒ๊ด€ํ•˜์ง€ ์•Š์ง€๋งŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
R(nitr/rstudio ํฌํ•จ)๊ณผ ipython์ด ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/ipython/ipython/issues/2958#issuecomment -46875435.

๋‚˜๋Š” ๋ฌผ๋ก  ํ•ด์„ ์ฝ”๋“œ์˜ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์‹คํ˜„, ๋‚œ ๊ทธ๋ƒฅ ์šฐ๋ฆฌ๊ฐ€, (๊ทธ๊ฒƒ์„ ํ‰๊ฐ€ / ํ•ด์„์—†์ด) "๊ทธ๋ƒฅ"๋””์Šคํ”Œ๋ ˆ์ด ์ฝ”๋“œ ์ธํ•˜์˜ ๋Šฅ๋ ฅ์„ ์žƒ์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ฑฑ์ • like this (์ฆ‰, ์—ญ ๋”ฐ์˜ดํ‘œ, ๋งŒ์•ฝ R ๊ตฌ๋ฌธ์„ )๊ฐ€ ์„ ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

knitr/R ๋งˆํฌ๋‹ค์šด์—์„œ ์ฝ”๋“œ(์ ์ ˆํ•˜๊ฒŒ ๊ฐ•์กฐ ํ‘œ์‹œ๋จ ๋“ฑ)๋ฅผ ํ‘œ์‹œํ• ์ง€ ์•„๋‹ˆ๋ฉด ์ถœ๋ ฅ(ํ”Œ๋กฏ, ํ…Œ์ด๋ธ” ๋“ฑ)๋งŒ ํ‘œ์‹œํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ๊ฒฝ์ œ ๋ฐฐ๊ฒฝ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ์ œ ๋…ผ๋ฌธ์—์„œ ์–ด๋–ค ์ฝ”๋“œ๋„ ๋ณด๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๊ฒƒ์€ ์ฝ”๋“œ๋ฅผ ๊ณผ์‹œํ•˜๋Š” ์ตœ์ ํ™”๋œ ์‚ฌ์šฉ ์‚ฌ๋ก€(์ œ ์ƒ๊ฐ์—๋Š”)์™€ ์•ฝ๊ฐ„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

@bilderbuchi ์˜ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค, ๊ท€ํ•˜์˜ "์ด๊ฒƒ์ด ์œ ์šฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค" ๋Œ“๊ธ€์˜ ๋งฅ๋ฝ์„ ์ž˜๋ชป ํ•ด์„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌํ˜„๋œ ๊ฒƒ์ด ๋ฌด์—‡์ด๋“  ๊ธฐ์กด ๋งˆํฌ๋‹ค์šด์„ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ํ›Œ๋ฅญํ•˜๊ณ  IPython์ด knitr์˜ ์ ์‹ฌ์„ ๋จน๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

https://github.com/ipython-contrib/IPython-notebook-extensions/wiki/python-markdown

์ €๋Š” ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ •๋ง ์ข‹์•„ํ•ฉ๋‹ˆ๋‹ค. ์…€์„ ๊ฐ€์ ธ์™€ ์œ ํšจํ•œ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ์ „์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ๋งˆํฌ๋‹ค์šด ํ”„๋กœ์„ธ์„œ๋ฅผ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์•„์ฃผ ์ข‹์•„์š”...๊ณง ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค

2014๋…„ 8์›” 17์ผ ์ผ์š”์ผ ์˜คํ›„ 2:18 Jan Schulz [email protected]
์ผ๋‹ค:

https://github.com/ipython-contrib/IPython-notebook-extensions/wiki/python-markdown

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/ipython/ipython/issues/2958#issuecomment -52431760.

ํ†ฐ ๋ธŒ๋žœ๋”
http://tombrander.com -๋ถ€๋™์‚ฐ
http://oswco.com - ์˜คํ”ˆ ์†Œํ”„ํŠธ์›จ์–ด
3763 ์›จ์ŠคํŠธ ์žญ์Šจ ๋Œ€๋กœ
๋ฒ„๋ฐ์—„, AL 35213
์ „ํ™” 205-267-1089
@dartdog

:+1: ์šฐ์•„ํ•œ. ์ €๋„ ์ด์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@JanSchulz , ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! python-markdown์„ ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ๋ฅผ ์ •๋ง ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๋ฉ”์ธ ipython( jupyter )์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์„ ๋ฉ”์ธ ipython(jupyter)์— ๋„ฃ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์•„๋งˆ ๊ณง ์•„๋‹™๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋งŽ์€ ๋””์ž์ธ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ํŠนํžˆ ์šฐ๋ฆฌ๋Š” ๋‹จ์ง€ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ๋ฐœ๋ช…ํ•˜๋Š” ๋Œ€์‹ ์— ๋งˆํฌ๋‹ค์šด ๊ตฌ๋ฌธ์„ ํ™•์žฅํ•˜๋Š” ๊ณต์‹์ ์ธ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์ด๊ฒƒ์€ (๋˜ํ•œ knitr/rmarkdown AFAIK๋„) 2๋‹จ๊ณ„ ๋ณ€ํ™˜์„ ํ†ตํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ์ฝ”๋“œ ๋ธ”๋ก์„ ์ฝ”๋“œ ์ถœ๋ ฅ์œผ๋กœ ๊ต์ฒดํ•œ ๋‹ค์Œ ๋‚˜๋จธ์ง€๋ฅผ ํ‘œ์ค€ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๊ฒƒ์€ ๋งˆํฌ๋‹ค์šด์˜ ํ™•์žฅ์ด ์•„๋‹ˆ๋ผ ์…€์˜ ์ „์ฒ˜๋ฆฌ๊ธฐ์ž…๋‹ˆ๋‹ค.

์–ด๋ ค์šด ์งˆ๋ฌธ์€ ๋งˆํฌ๋‹ค์šด ์…€ ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์ž„์˜์˜ ๋ณด์ด์ง€ ์•Š๋Š” Python ์ฝ”๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์œ ์šฉํ•œ ๊ตฌํ˜„์—์„œ ์ฝ”๋“œ ์‹คํ–‰์ด ์ œํ•œ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ์ ๊ทน์ ์œผ๋กœ ์„ค์น˜ํ•˜๊ณ  ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•˜๋Š” ๋ณ„๋„์˜ ํ™•์žฅ์ธ ํ•œ ์ด๊ฒƒ์€ ๋‹ค๋ฅธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ Python ์ฝ”๋“œ๋Š” ๋…ธํŠธ๋ถ์ด ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋งˆํฌ๋‹ค์šด ์…€์—์„œ ํŒŒ์ด์ฌ ์ฝ”๋“œ์˜ ์ถœ๋ ฅ ์œ„๋กœ ๋งˆ์šฐ์Šค๋ฅผ ๊ฐ€์ ธ๊ฐ€๋ฉด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํˆดํŒ์„ ์ถ”๊ฐ€ํ•  ๊ณ„ํš์ด๋ฏ€๋กœ ์ด๊ฒƒ์ด ์–ด๋””์„œ ์™”๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์ด๊ฒƒ์€ (๋˜ํ•œ knitr/rmarkdown AFAIK๋„) 2๋‹จ๊ณ„ ๋ณ€ํ™˜์„ ํ†ตํ•ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ์ฝ”๋“œ ๋ธ”๋ก์„ ์ฝ”๋“œ ์ถœ๋ ฅ์œผ๋กœ ๊ต์ฒดํ•œ ๋‹ค์Œ ๋‚˜๋จธ์ง€๋ฅผ ํ‘œ์ค€ ๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๊ฒƒ์€ ๋งˆํฌ๋‹ค์šด์˜ ํ™•์žฅ์ด ์•„๋‹ˆ๋ผ ์…€์˜ ์ „์ฒ˜๋ฆฌ๊ธฐ์ž…๋‹ˆ๋‹ค.

์ปค์Šคํ…€ ๋งˆํฌ๋‹ค์šด์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ด๋ฏธ ์šฐ๋ฆฌ๊ฐ€ mathjax์— ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ถ„๋ช…ํžˆ ์ €์žฅํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค
๋…ธํŠธ๋ถ์„ ๋‹ค์‹œ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ์— ๋Œ€๋น„ํ•˜์—ฌ ์‚ฌ์ „ ์ฒ˜๋ฆฌ ๋งˆํฌ๋‹ค์šด์„ ์ทจ์†Œํ•˜๋ฏ€๋กœ ๋งˆํฌ๋‹ค์šด์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋ชจ๋“  ๋„๊ตฌ๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ์‚ฌ์ „ ์ฒ˜๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ „์ฒ˜๋ฆฌ๊ธฐ ๋˜๋Š” ํ›„์ฒ˜๋ฆฌ๊ธฐ์—์„œ ์šฐ๋ฆฌ๋Š” ์‚ฌ๋žŒ๋“ค์ด ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๊ฑฐ๋‚˜ ๋‚˜์ค‘์— ํ•˜๊ฒŒ ๋  ๊ฒƒ๊ณผ ์ถฉ๋Œํ•  ์ˆ˜๋„ ์žˆ๊ณ  ์ถฉ๋Œํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋Š” ๊ณ ์œ ํ•œ ๊ตฌ๋ฌธ์„ ๋ฐœ๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋ ค์šด ์งˆ๋ฌธ์€ ๋งˆํฌ๋‹ค์šด ์…€ ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์ž„์˜์˜ ๋ณด์ด์ง€ ์•Š๋Š” Python ์ฝ”๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์œ ์šฉํ•œ ๊ตฌํ˜„์—์„œ ์ฝ”๋“œ ์‹คํ–‰์ด ์ œํ•œ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ์ ๊ทน์ ์œผ๋กœ ์„ค์น˜ํ•˜๊ณ  ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•˜๋Š” ๋ณ„๋„์˜ ํ™•์žฅ์ธ ํ•œ ์ด๊ฒƒ์€ ๋‹ค๋ฅธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ Python ์ฝ”๋“œ๋Š” ๋…ธํŠธ๋ถ์ด ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋งˆํฌ๋‹ค์šด ์…€์—์„œ ํŒŒ์ด์ฌ ์ฝ”๋“œ์˜ ์ถœ๋ ฅ ์œ„๋กœ ๋งˆ์šฐ์Šค๋ฅผ ๊ฐ€์ ธ๊ฐ€๋ฉด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํˆดํŒ์„ ์ถ”๊ฐ€ํ•  ๊ณ„ํš์ด๋ฏ€๋กœ ์ด๊ฒƒ์ด ์–ด๋””์„œ ์™”๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด user_variable๋กœ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, user_ns ํ‚ค ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‹คํ–‰์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ํ•˜๋ฉด user_variable๋กœ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, user_ns ํ‚ค ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‹คํ–‰์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ํ˜ธ์ถœ ๊ธฐ๋Šฅ์„ ํ—ˆ์šฉํ•˜๊ณ  ์‹ถ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์†Œํ•œ ๊ฒฝ์šฐ๋Š” ์ถœ๋ ฅ ํ˜•์‹์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž ์ง€์ • _repr_์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด์™€ ๊ฐ™์€ ๊ฒƒ์ด ๊ตฌํ˜„๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์†”๋ฃจ์…˜์€ Jinja ํ•„ํ„ฐ๋ฅผ ํ†ตํ•ด MD ์…€์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ด์ „์— ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด dexi ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋‹ค๋ฅธ ํ•œํŽธ์œผ๋กœ, ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋ชจ๋“  ์…€์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Jinja๋Š” ๋งˆํฌ์—…์˜ ๋ณต์žก์„ฑ์„ ์ƒ๋‹นํžˆ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  Jinja+Markdown์€ ์ผ๋ฐ˜ MD์™€ ๋‹ค๋ฅธ ๊ฐ•์กฐ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋ณ„๋„์˜ ์…€ ์œ ํ˜•์œผ๋กœ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํ˜„์žฌ ๋งˆํฌ๋‹ค์šด์— ๋Œ€ํ•ด ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•œ ์ฝ”๋“œ ์…€์„ ์ˆจ๊ธฐ๊ฑฐ๋‚˜ ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์ด ์ฝ”๋“œ์—์„œ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

-> text/markdown ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์†Œ์Šค๊ฐ€ ์ถœ๋ ฅ์— ์˜ํ•ด ๋ณด์ด์ง€ ์•Š๊ฑฐ๋‚˜ ๋Œ€์ฒด๋˜์–ด์•ผ ํ•จ์„ ๋‚˜ํƒ€๋‚ด๋Š” %%pymarkdown ๋งˆ๋ฒ•์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ˆ ์€ ์ž…๋ ฅ ๋‚ด์—์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ s&r์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

[ํŽธ์ง‘: ์ข‹์•„, ๊ตฌ๋ฌธ ๊ฐ•์กฐ ํ‘œ์‹œ๊ฐ€ ์—†๊ณ  qtconsole์—์„œ ์˜๋ฏธ๊ฐ€ ์—†๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค...]

๊ด€๋ จ: Mathematica 10์€ "๋ณด๊ณ ์„œ"์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฐธ์กฐ: http://www.wolfram.com/mathematica/new-in-10/automated-report-generation/

(์•„์ง) ์ž์„ธํžˆ ๋‹ค๋ฃจ์ง€๋Š” ์•Š์•˜์ง€๋งŒ ๋…ธํŠธ๋ถ์„ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋…ธํŠธ๋ถ ํ…์ŠคํŠธ์— ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ฐธ์กฐ์™€ ๊ณ„์‚ฐ๋œ ์ถœ๋ ฅ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ MD ์…€์— ๋™์ผํ•œ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ์ฐธ์กฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์–ด๋–ค ์…€์„ ๋‹ค์‹œ ๋ Œ๋”๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

@Pipeliner ๋‹น์‹ ์ด ๋ฌด์—‡์„ ์–ป๊ณ  ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. iPython/Jupyter ๋…ธํŠธ๋ถ์—์„œ ๊ฐ ์…€์€ ๋ช…์‹œ์ ์œผ๋กœ ๋ Œ๋”๋ง๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์…€ ๋‚ด์—์„œ Ctrl-return ๋˜๋Š” ๋ฉ”๋‰ด ๋ชจ์Œ์˜ ์…€->๋ชจ๋‘ ์‹คํ–‰). ๋‚ด๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋Š” ์ž๋™์œผ๋กœ ๊ฐ์ง€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. knitr/rmarkdown์„ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? knitr/rmarkdown์€ ๊ฐ ์…€์˜ ๊ฒฐ๊ณผ ์บ์‹œ๋ฅผ ์œ ์ง€ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ  ์ด์ „ ์…€์ด ๋ณ€๊ฒฝ๋  ๋•Œ ์ด๋ฅผ ๋”ํ‹ฐ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ipython/jupyter ๋…ธํŠธ๋ถ์„ ์ข‹์•„ํ•˜์ง€๋งŒ ๋งˆํฌ๋‹ค์šด์—์„œ {{ python variable }}๋งŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž‘์€ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋กœ ๋…ธํŠธ๋ถ์„ ์ค€๋น„ํ•˜๊ณ  ๋‚˜์ค‘์— ์ „์ฒด ์„ธํŠธ๋ฅผ ๊ต์ฒดํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

PlaceProxy ์œ„์ ฏ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŽ˜์ด์ง€์˜ html ์„ ํƒ๊ธฐ์—์„œ ์œ„์ ฏ์„ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆํฌ๋‹ค์šด์— <span id="myid">placeholder</span> ์‚ฝ์ž…ํ•œ ๋‹ค์Œ ๋‚˜์ค‘์— ์ฝ”๋“œ์—์„œ x=HTML('widget value'), PlaceProxy(child=x, selector='#myid') ์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ x.value='something' ๋ฅผ ์„ค์ •ํ•  ๋•Œ๋งˆ๋‹ค ์—…๋ฐ์ดํŠธ๊ฐ€ ๋งˆํฌ๋‹ค์šด์— ํ‘œ์‹œ๋˜๋Š” ์œ„์ ฏ์— ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. PlaceProxy์˜ ์ •์˜๋Š” https://github.com/ipython/ipywidgets/blob/1e407cef864363c66a23781b8d560a6ac18b3370/ipywidgets/widgets/widget_box.py#L70 ์„ ์ฐธ์กฐ

๋ฌผ๋ก  ๋งŽ์€ ์ฃผ์˜์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆํฌ๋‹ค์šด์„ ํŽธ์ง‘ํ•˜๋ฉด ์œ„์ ฏ์ด ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋…ธํŠธ๋ถ์„ ์—ด๋ฉด ์œ„์ ฏ์ด ์ƒ์„ฑ๋˜์ง€ ์•Š์•„ ํ‘œ์‹œ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋ฅผ ํ†ตํ•ด ๋งˆํฌ๋‹ค์šด ์…€ ๋‚ด๋ถ€์˜ ์ถœ๋ ฅ์„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์€ ๋ฌธ์ž์—ด์„ ๊ตฌ์„ฑํ•˜๊ณ  ๋งˆํฌ๋‹ค์šด ์…€์ด ์•„๋‹Œ ์ถœ๋ ฅ์œผ๋กœ ๋งˆํฌ๋‹ค์šด์„ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋™์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜์ง€๋Š” ์•Š์ง€๋งŒ ์…€์„ ํ‰๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค ๋งˆํฌ๋‹ค์šด์ด ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.

์ด ๋…ธํŠธ๋ถ ํ™•์žฅ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/ipython-contrib/IPython-notebook-extensions/wiki/python-markdown_v3

๋‚˜๋Š” ๋ฌธ์ž์—ด์„ ๊ตฌ์„ฑํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜๊ณ  ํฐ html ๋ฌธ์ž์—ด์„ ๊ฐ–๋Š” ๊ฒƒ์ด ๋„ˆ๋ฌด ์ง€์ €๋ถ„ํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ถœ๋ ฅ์œผ๋กœ ์ž…๋ ฅํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊น”๋”ํ•œ ์•„์ด๋””์–ด์ง€๋งŒ ์ €๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐ์กฐ์ฐจ ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ข‹์€ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด ๊ธฐ๋Šฅ์€ Rmarkdown์—์„œ ์˜จ ์‚ฌ๋žŒ์—๊ฒŒ ์ •๋ง ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. R์€ ๋ฉ‹์ง„ ๋ณด๊ณ ์„œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ํ›จ์”ฌ ๋” ๋‚˜์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋…ธํŠธ๋ถ์—์„œ ์ด ๋ฌธ์ œ์˜ ๋ณต์ œ๋ณธ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ด๋ฏธ ์ฝ”๋“œ ์…€์—์„œ IPython.display.Markdown ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

image

from IPython.display import Markdown

one = 1
two = 2
three = one + two

Markdown("# Title")
Markdown("""
# Math
## Addition
Here is a simple addition example: {one} + {two} = {three}
""".format(one=one, two=two, three=three))

๋ฉ‹์ง„! ์œ ํ‹ธ๋ฆฌํ‹ฐ(๋˜๋Š” %%markdown ๋งˆ๋ฒ•)๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋„ ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ปค๋„ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ์ž๋™์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์—
ํ•˜๋‹ค:

%%markdown

## Subsection

Here is {one} and {two}

2017๋…„ 4์›” 26์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 6:35, Grant Nestor ์•Œ๋ฆผ @github.com
์ผ๋‹ค:

๋…ธํŠธ๋ถ์—์„œ ์ด ๋ฌธ์ œ์˜ ๋ณต์ œ๋ณธ์„ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ด๋ฏธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค
์ฝ”๋“œ ์…€์—์„œ IPython.display.Markdown ์‚ฌ์šฉ:

[์ด๋ฏธ์ง€: ์ด๋ฏธ์ง€]
https://cloud.githubusercontent.com/assets/512354/25464012/f434c52c-2aae-11e7-9171-541fb0f6601e.png

IPython.display ๊ฐ€์ ธ์˜ค๊ธฐ ๋งˆํฌ๋‹ค์šด์—์„œ

ํ•˜๋‚˜ = 1
๋‘ = 2
์…‹ = ํ•˜๋‚˜ + ๋‘˜

๋งˆํฌ๋‹ค์šด("#์ œ๋ชฉ")
Markdown("""# Math## Addition์—ฌ๊ธฐ์— ๊ฐ„๋‹จํ•œ ๋ง์…ˆ ์˜ˆ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค: {one} + {two} = {three}""".format(one=one, two=two, three=three))

โ€”
๋‹น์‹ ์ด ํ• ๋‹น๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/ipython/ipython/issues/2958#issuecomment-297586914 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AABr0CIHhxwNwQF6MiHHy2M612zRnf5Wks5rz_D4gaJpZM4AchzX
.

--
๋ธŒ๋ผ์ด์–ธ E. ๊ทธ๋ ˆ์ธ์ €
๋ฌผ๋ฆฌํ•™ ๋ฐ ๋ฐ์ดํ„ฐ ๊ณผํ•™ ๋ถ€๊ต์ˆ˜
Cal Poly State University, San Luis Obispo
Twitter ๋ฐ GitHub์˜ @ellisonbg
[email protected] ๋ฐ [email protected]

@ellisonbg ๊ทธ๊ฒŒ @Carreau ์ด์™€ ๊ฐ™์€ ๊ฒƒ์— ๊ด€์‹ฌ์ด

๋˜ํ•œ ์ด๊ฒƒ์„ ๋…ธํŠธ๋ถ์˜ ์ƒˆ๋กœ์šด ์…€ ํƒœ๊ทธ ๊ธฐ๋Šฅ๊ณผ ๊ฒฐํ•ฉํ•˜๋ฉด( ๋…ธํŠธ๋ถ 5.0 ๋ฆด๋ฆฌ์Šค ๊ฒŒ์‹œ๋ฌผ ์ฐธ์กฐ ) nbconvert๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋…ธํŠธ๋ถ์„ ๋ณ€ํ™˜ํ•  ๋•Œ ์ž…๋ ฅ ์…€์„ ์ˆจ๊ธธ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: nbconvert-hide ํƒœ๊ทธ ์‚ฌ์šฉ). @takluyver nbconvert-hide ํƒœ๊ทธ๊ฐ€ ํ˜„์žฌ nbconvert์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

์•„์ง๊นŒ์ง€๋Š” ์•„๋‹ˆ์ง€๋งŒ nbconvert ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๊ฒƒ์— +1! ๋˜ํ•œ ํ˜„์žฌ ์ž…๋ ฅ/์ถœ๋ ฅ์„ ์ˆจ๊ธฐ๋Š” ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
JupyterLab์€ ํ•ด๋‹น ์ƒํƒœ๋ฅผ nbconvert์— ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ฉ”ํƒ€๋ฐ์ดํ„ฐ.

2017๋…„ 4์›” 27์ผ ๋ชฉ์š”์ผ ์˜ค์ „ 7์‹œ 33๋ถ„, Grant Nestor [email protected]
์ผ๋‹ค:

@ellisonbg https://github.com/ellisonbg ๊ทธ๊ฒŒ ์ข‹๊ฒ ๊ณ  ์ œ ์ƒ๊ฐ์—๋Š”
์ด๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค(Python์—์„œ ๋ Œ๋”๋ง ๋งˆํฌ๋‹ค์šด ๋Œ€
ํ‘œ์‹œ ๋ฐ ๊ธฐํƒ€ ๋งˆํฌ๋‹ค์šด ๊ธฐ๊ณ„๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ
์—ฐ์žฅํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค). @Carreau https://github.com/Carreau Any
์ด๋Ÿฐ ๊ฒƒ์— ๊ด€์‹ฌ?

๋˜ํ•œ ์ด๊ฒƒ์„ ๋…ธํŠธ๋ถ์˜ ์ƒˆ๋กœ์šด ์…€ ํƒœ๊ทธ ๊ธฐ๋Šฅ๊ณผ ๊ฒฐํ•ฉ
(๋…ธํŠธ๋ถ 5.0 ๋ฆด๋ฆฌ์Šค ๊ฒŒ์‹œ๋ฌผ ์ฐธ์กฐ
http://blog.jupyter.org/2017/04/04/jupyter-notebook-5-0/ ), ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
nbconvert๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋…ธํŠธ๋ถ์„ ๋ณ€ํ™˜ํ•  ๋•Œ ์ž…๋ ฅ ์…€์„ ์ˆจ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
(์˜ˆ: nbconvert-hide ํƒœ๊ทธ ์‚ฌ์šฉ). @takluyver https://github.com/takluyver
nbconvert-hide ํƒœ๊ทธ๊ฐ€ ํ˜„์žฌ nbconvert์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/ipython/ipython/issues/2958#issuecomment-297731409 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AABr0BNgLTtlzwbrIjqBquzsE9lhLXchks5r0KdAgaJpZM4AchzX
.

--
๋ธŒ๋ผ์ด์–ธ E. ๊ทธ๋ ˆ์ธ์ €
๋ฌผ๋ฆฌํ•™ ๋ฐ ๋ฐ์ดํ„ฐ ๊ณผํ•™ ๋ถ€๊ต์ˆ˜
Cal Poly State University, San Luis Obispo
Twitter ๋ฐ GitHub์˜ @ellisonbg
[email protected] ๋ฐ [email protected]

@Carreau ์ด์™€ ๊ฐ™์€ ๊ฒƒ์— ๊ด€์‹ฌ์ด

์ด ์ž‘์—… ๋ฐฉ์‹์€ ์ด๋ฏธ 2013๋…„์— ๋…ผ์˜๋˜์—ˆ์œผ๋ฉฐ AFAICT๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ˆˆ์‚ด์„ ์ฐŒํ‘ธ๋ ธ์Šต๋‹ˆ๋‹ค.

  • ๋ชจ๋“  ์–ธ์–ด์—์„œ %%markdown์„ ๋‹ค์‹œ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•˜๋ ค๋ฉด ์ปค๋„ ์ธก์—์„œ ๊ณ„์‚ฐ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งˆํฌ๋‹ค์šด ๋ Œ๋”๋ง์˜ ์˜๋ฏธ๋ก ์  ์˜๋ฏธ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  • ์Šคํฌ๋ฃจ ์—… nbconvert --to markdown ๋ฐ nbconvert --to script
  • ์Šคํฌ๋ฅ˜ ์—… ๋…ธํŠธ๋ถ ์ˆ˜์ž… ํ›„ํฌ.

"๋งˆํฌ๋‹ค์šด" ์…€์˜ ํ…์ŠคํŠธ๊ฐ€ ์ปค๋„ ์ƒํƒœ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Š” ๋…ธํŠธ๋ถ(IMHO)์˜ ์˜๋ฏธ ์ฒด๊ณ„๋ฅผ ๊นจ๋œจ๋ฆฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ท€์—ฌ์šด ๋™์•ˆ ๋‚˜๋Š” ์ด ์•„์ด๋””์–ด์— ๋ฐ˜๋Œ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ %%markdown , %%latex , %%javascript ... ๋“ฑ์˜ ๋งˆ๋ฒ•์€ ์šฐ๋ฆฌ๊ฐ€ ์ด ํ† ๋ก ์„ ํ•  ๋•Œ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

%%markdown ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ์œ ์‚ฌํ•œ ๋งˆ๋ฒ•์ด ๊ฝค ์˜ค๋žœ ์‹œ๊ฐ„ ๋™์•ˆ ์กด์žฌํ•ด ์™”์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด์ „์— ์ด ์•„์ด๋””์–ด๋ฅผ ์ ‘ํ•œ ์ ์ด ์—†์œผ๋ฏ€๋กœ ์ข…๋ฃŒํ•˜๋ฏ€๋กœ ์„œ๋‘๋ฅด์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๋‚ด ์ƒ๊ฐ์€ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์ง„ํ™”ํ–ˆ์œผ๋ฉฐ @gnestor ์˜ ์•„์ด๋””์–ด๊ฐ€ ๋งˆ์Œ์—

์ •์˜์— ๋”ฐ๋ฅด๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆํฌ๋‹ค์šด ์…€์—์„œ ์ปค๋„์˜ ๋ณ€์ˆ˜๋ฅผ ์›ํ•˜๋ฉด
๋งˆํฌ๋‹ค์šด ์…€์€ ์ปค๋„์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. "๊ทธ๊ฒƒ์€ ๋ฌด๋„ˆ์ง„๋‹ค.
๋ฉ”๋ชจ์žฅ์˜ ์˜๋ฏธ"๋Š” ์ฝ”๋“œ ์…€์„ ํ—ˆ์šฉํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ปค๋„์—์„œ ์‹คํ–‰๋˜๊ณ  ์ถœ๋ ฅ์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฃผ์š” ๋ชฉ์  ์ค‘ ํ•˜๋‚˜
๋…ธํŠธ๋ถ ๋ฌธ์„œ์˜ ํ•ต์‹ฌ์€ ์ปค๋„์ด ํ•˜๋Š” ์ผ์„ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
ํ’๋ถ€ํ•œ ์ถœ๋ ฅ์„ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ์ปค๋„์—์„œ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ„๋‹จํ•˜๋ฉฐ
์ด๊ฒƒ์€ ๋‹ค์šด ์ŠคํŠธ๋ฆผ (nbconvert, import hooks)์„ ๊นจ๋œจ๋ฆฐ ๋‹ค์Œ ๊ทธ ๊ฒƒ๋“ค์„ ๊นจ๋œจ๋ฆฝ๋‹ˆ๋‹ค.
๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(๋งˆํฌ๋‹ค์šด ์ถœ๋ ฅ์€ ์ด๋ฏธ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค).

๊ทธ๋Ÿฌ๋‚˜ ipython ์ปค๋„ ์™ธ๋ถ€์—์„œ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค ...

2017๋…„ 4์›” 27์ผ ๋ชฉ์š”์ผ ์˜ค์ „ 10์‹œ 29๋ถ„, Matthias Bussonnier <
[email protected]>์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@Carreau https://github.com/Carreau ์ด์™€ ๊ฐ™์€ ๊ฒƒ์— ๊ด€์‹ฌ์ด ์žˆ์œผ ์‹ญ๋‹ˆ๊นŒ?

์ด๋Ÿฌํ•œ ์ž‘์—… ๋ฐฉ์‹์€ ์ด๋ฏธ 2013๋…„์— ๋…ผ์˜๋˜์—ˆ์œผ๋ฉฐ
AFAICT๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ˆˆ์‚ด์„ ์ฐŒํ‘ธ๋ ธ์Šต๋‹ˆ๋‹ค.

  • ๋ชจ๋“  ์–ธ์–ด์—์„œ %%markdown์„ ๋‹ค์‹œ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•˜๋ ค๋ฉด ์ปค๋„ ์ธก์—์„œ ๊ณ„์‚ฐ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งˆํฌ๋‹ค์šด ๋ Œ๋”๋ง์˜ ์˜๋ฏธ๋ก ์  ์˜๋ฏธ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
  • ์Šคํฌ๋ฅ˜ ์—… nbconvert --to markdown ๋ฐ nbconvert --to ์Šคํฌ๋ฆฝํŠธ
  • ์Šคํฌ๋ฅ˜ ์—… ๋…ธํŠธ๋ถ ์ˆ˜์ž… ํ›„ํฌ.

๊ทธ๊ฒƒ์€ ๋…ธํŠธ๋ถ(IMHO)์˜ ์˜๋ฏธ๋ฅผ ๊นจ๋œจ๋ฆฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
"๋งˆํฌ๋‹ค์šด" ์…€์€ ์ปค๋„ ์ƒํƒœ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ท€์—ฌ์šด ๋™์•ˆ ๋‚˜๋Š” ๊ฐ„๋‹ค
์ด ์•„์ด๋””์–ด๋ฅผ ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ %%markdown, %%latex, %%javascript ... ๋“ฑ์˜ ๋งˆ๋ฒ•์ด ๋‹ค์Œ ์œ„์น˜์— ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๊ฐ€ ์ด ํ† ๋ก ์„ ํ•˜๊ณ  ์žˆ์—ˆ๋˜ ์‹œ๊ฐ„.

๋‚˜๋Š” ๋น„์Šทํ•œ ๋งˆ๋ฒ•์ด ๊ฝค ์˜ค๋žซ๋™์•ˆ ์กด์žฌํ•ด ์™”๋‹ค๋Š” ์ ์— ์œ ์˜ํ•  ๊ฒƒ์ด๋‹ค.
https://gist.github.com/bj0/5343292 ๋ฐ ํ›จ์”ฌ ๋” ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ
%%markdown์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ข…๋ฃŒ๋˜๋ฏ€๋กœ ์„œ๋‘๋ฅด์ง€ ๋งˆ์‹ญ์‹œ์˜ค.
๋‹น์‹ ์€ ์ „์—์ด ์•„์ด๋””์–ด๋ฅผ ๋งŒ๋‚œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/ipython/ipython/issues/2958#issuecomment-297784026 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AABr0HU-Gb3ENSidykbte53geYqPpy-sks5r0NCAgaJpZM4AchzX
.

--
๋ธŒ๋ผ์ด์–ธ E. ๊ทธ๋ ˆ์ธ์ €
๋ฌผ๋ฆฌํ•™ ๋ฐ ๋ฐ์ดํ„ฐ ๊ณผํ•™ ๋ถ€๊ต์ˆ˜
Cal Poly State University, San Luis Obispo
Twitter ๋ฐ GitHub์˜ @ellisonbg
[email protected] ๋ฐ [email protected]

์ฐธ์กฐ ๊ตฌํ˜„(ํด๋ž˜์‹ ๋…ธํŠธ๋ถ ํ™•์žฅ): https://github.com/ipython-contrib/jupyter_contrib_nbextensions/blob/master/src/jupyter_contrib_nbextensions/nbextensions/python-markdown/main.js

์ด๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(Python์—์„œ ๋งˆํฌ๋‹ค์šด ๋ Œ๋”๋ง

์ฒ˜์Œ์— ๊ท€ํ•˜์˜ ์ง„์ˆ ์„ ์ž˜๋ชป ์ฝ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ช…ํ™•ํžˆ ํ•˜์ž๋ฉด - ์ด๊ฒƒ์€ ๋งˆํฌ๋‹ค์šด์„ html๋กœ ๋ Œ๋”๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ปค๋„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งˆํฌ๋‹ค์šด์„ ํ‘œ์‹œ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(markdown mimetype์œผ๋กœ). html์— ๋Œ€ํ•œ ์‹ค์ œ ๋ Œ๋”๋ง ๋งˆํฌ๋‹ค์šด์€ ์—ฌ์ „ํžˆ โ€‹โ€‹ํด๋ผ์ด์–ธํŠธ ์ธก, nbconvert ๋“ฑ์—์„œ ์ˆ˜ํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ข‹์•„ํ•œ๋‹ค. ์ปค๋„ ์ƒํƒœ์™€ ๊ด€๋ จ๋œ ์‰ฌ์šด ๋งˆํฌ๋‹ค์šด์„ ์›ํ•˜๋ฉด ์ปค๋„์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ๋งˆํฌ๋‹ค์šด์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋งˆํฌ๋‹ค์šด์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ์œ„์ ฏ์„ ์‚ฌ์šฉํ•˜์„ธ์š”(OutputWidget์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ HTMLWidget๊ณผ ์œ ์‚ฌํ•œ MarkdownWidget์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ). ์ด๊ฒƒ์€ ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ์„ ์ˆจ๊ธฐ๊ฑฐ๋‚˜ ํ‘œ์‹œํ•˜๋Š” ์‰ฌ์šด ๋ฐฉ๋ฒ•๊ณผ ํ•จ๊ป˜ ๋‚˜์—๊ฒŒ ๋งŽ์€ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ์ด ํ‹ฐ์ผ“์„ ๋ฐœ๊ฒฌํ–ˆ๊ณ  SoS ๋„ ์•ž์„œ ์–ธ๊ธ‰ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹, ์ฆ‰ ์ปค๋„์—์„œ ๋งˆํฌ๋‹ค์šด์„ ๋ Œ๋”๋งํ•œ๋‹ค๋Š” ์ ์„ ์–ธ๊ธ‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ sos๋Š” ์…€์˜ ํ‘œ์ค€ ์ถœ๋ ฅ์„ MD(๊ธฐ๋ณธ๊ฐ’), HTML ๋“ฑ์œผ๋กœ ๋ Œ๋”๋งํ•˜๋Š” %render ๋งˆ๋ฒ• ์„ ๊ตฌํ˜„ํ•˜๊ณ , sos๋Š” ๋‹ค๋ฅธ ์–ธ์–ด๋ฅผ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ํ•˜์œ„ ์ปค๋„์˜ ์ถœ๋ ฅ๋„ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๊ฐ„๋‹จํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. https://github.com/jupyter/nbconvert/issues/320

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋”๋ผ๋„ RMarkdown๊ณผ๋„ ํ˜ธํ™˜๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋Š”

 x์˜ ๊ฐ’์€ 'rx'์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ x ๋Š” R์˜ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.

https://github.com/vatlab/markdown-kernel ์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ Jupyter ํ™˜๊ฒฝ์—์„œ Rmarkdown ์…€์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

TL;DR: ์ด ์Šค๋ ˆ๋“œ๊ฐ€ ์—ฌ์ „ํžˆ ์ตœ์‹  ์ƒํƒœ์ž…๋‹ˆ๊นŒ? JupyterLab์—๋Š” ์ง์ ‘์ ์ธ ์†”๋ฃจ์…˜์ด ์—†์ง€๋งŒ Notebook์—๋Š” ์žˆ์Šต๋‹ˆ๊นŒ? (2020)

๊ทธ๋ž˜์„œ ... ์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ๊ณ  ์ œ์•ˆ๋œ ๋‹ค์–‘ํ•œ ํ•ดํ‚น์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค ... 2020๋…„ ํ˜„์žฌ ์ด ๊ธฐ๋Šฅ์€ JupyterLab์—์„œ ์—ฌ์ „ํžˆ ๋ถˆ๊ฐ€๋Šฅ/๋ˆ„๋ฝ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(๊ธฐ๋ณธ ์‚ฌ์ดํŠธ์—์„œ ์‚ฌ๋žŒ๋“ค์ด ๋ช‡ ๋…„ ๋™์•ˆ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐ•์š”ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?). SoS๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํ•œ(๋‹ค๋ฅธ ๋ชจ๋“  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋…ธํŠธ๋ถ ์ „์šฉ, ์ฆ‰ ํ˜„๋Œ€ ์„ค์น˜์— ๋ ˆ๊ฑฐ์‹œ/์“ธ๋ชจ์—†๋Š” ๊ฒƒ์œผ๋กœ ๋ณด๊ฑฐ๋‚˜ ... Jupyter์˜ "์ฝ”๋“œ + ๋งˆํฌ๋‹ค์šด" ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํŽธ๋ฆฌํ•จ์„ ๋ฒ„๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค).

๋‚ด๊ฐ€ ๋†“์นœ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฉ”์ธ JupyterLab(์ฐธ๊ณ : ์ž˜ ์ž‘๋™ํ•˜๋Š” Notebooks๊ฐ€ ์•„๋‹ˆ๋ผ, 2020๋…„ ํ˜„์žฌ์—๋„ Notebooks๊ฐ€ ๋ถ„๋ช…ํžˆ ํ›จ์”ฌ ๋” ์ž˜ ์ž‘๋™ํ•  ๋•Œ ๋ฉ”์ธ ํ”„๋กœ์ ํŠธ๊ฐ€ Lab์„ ๋„ˆ๋ฌด ์„ธ๊ฒŒ ๋ฐ€์–ด๋ถ™์ธ๋‹ค๋Š” ์‚ฌ์‹ค์— ์•ฝ๊ฐ„ ๋ฐฐ์‹ ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค)์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋งˆํฌ๋‹ค์šด์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์‚ฌ์†Œํ•˜๊ณ  ๋น„๋ถ„์„์ ์ธ ์˜ˆ์ œ๋ฅผ ๋„˜์–ด์„œ๋Š” ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•œ ๋ฌธ์„œ - ์ˆ˜์‚ฌํ•™์ ์œผ๋กœ ๋งํ•ด์„œ: ์„œ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๋ฐ์ดํ„ฐ ๋ถ„์„ ์ œํ’ˆ์— ์„œ์‹ ์‹œ์Šคํ…œ์„ ํฌํ•จํ•˜๋Š” ์˜๋ฏธ๊ฐ€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ๋„ˆ๋ฌด ์ž˜๋ชป๋œ ๊ฒƒ ๊ฐ™์•„์„œ ๋‚ด๊ฐ€ ๊ธฐ๋ณธ์ ์ธ ๊ฒƒ์„ ๋†“์ณค์Œ์— ํ‹€๋ฆผ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. "SoS + markdown-kernel"์€ ํ˜ธ๋‘๋ฅผ ๊นจ๋Š” ํฐ ๋ง์น˜์ฒ˜๋Ÿผ ๋Š๊ปด์ง€์ง€๋งŒ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ...

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰