ruby, markdown, latex 등을 사용한 오픈소스 문서작성 방법

oosap의 이미지

제가 최근에 progit (http://progit.org/) 이라는 git 관련 문서작성 프로젝트에 잠시 참여해본 적이 있습니다.
그리고 최근에 emacs 강좌(http://emacsbook.taesoo.org/)를 올려주시는 분의 배포물도 받아보았습니다.

두 곳의 공통점은 문서작성시 .markdown 포멧 + latex + ruby 등을 사용해서 html, epub, pdf 등 다양한 형식의 문서를 자동으로 생성할 수 있는 스크립트를 구현했다는 것입니다.

그런데 그 스크립트 작성의 배경이 되는 기술은 무엇이고 제가 만약 이와 같은 오픈소스 문서작성을 할 때 참고할 수 있는 좋은 가이드가 될 만한게 없을까 궁금해서 여쭤봅니다.

그분들처럼 다양한 형식은 말고 저는 html 형식으로만 만들어보는 것으로 시작하고 싶습니다.
html 한가지 형식의 문서를 만든다고 하면 .markdown 형식에 데이타를 담고 이미지는 별도로 분리하고 스크립트로 html을 만들어내는 것은 좋은 방법이 아닌걸까요?

snowall의 이미지

배경이 되는 기술은 본문에 쓰셨듯이 markdown이나 latex이나 ruby죠...-_-;;;

결국은 컴파일러를 만드는 것과 같은 과정이 될거예요.

원본 소스코드 -> 컴파일러 -> 목적 바이너리

즉,

(.markdown포맷 -> 컴파일러 -> html ) 기능을 구현하고

여기에 요청이 있을 때 자동으로 컴파일하는 기능을 추가로 구현하면 되는 것 같네요.

그런데 아마 위의 두 기능은 거의 구현된 것들이 있으리라는 추측이 드는군요...

피할 수 있을때 즐겨라! http://melotopia.net/b

oosap의 이미지

네 맞습니다. 제가 올려본 오픈소스 문서 작업에서는 말씀하신 내용이 쉘스크립트로 구현되어있는 것 같아요.
그런데 제가 짐작하기로 이런 문서작성 방법론이 뭔가 알려지고 정립된게 있지 않나 싶었거든요.
그렇기 때문에 유명한 오픈소스 문서작업들이 이런 방법을 쓰지 않나 하는 그런 생각요...
그게 XYZ 방법론에 따른 것이다. 라고 한다면 제가 그 방법론을 공부해서 저도 구현해보고 싶은 것이거든요...

아마 그 알려진 방법론은 쉘스크립팅 정도되지 않을까요?
쉘프로그래밍도 공부해야... 배울게 끝이 없어요... 언제 다 배울 수 있을까요...

Thanks for being one of those who care for people and mankind.
I'd like to be one of those as well.

snowall의 이미지

뭐....

예를들어서

http://.../ManualForSomething.html
이게 요청이 왔으면
http서버에서는

compile ManualForSomething.source ManualForSomething.html

뭐 이런식의 스크립트를 실행시키겠죠
그리고
위의 요청에 컴파일된 결과물을 반환해줄 것이고

그럼 compile이라는 스크립트만 있으면 될텐데, 그 스크립트는 언어 종류마다 컴파일하는 방법이 있을테니 적당히 make파일을 미리 만들어 두거나, 셸스크립트로 노가다를 뛰거나 하면 되겠지 싶네요.

여기에 보안 문제라든가, 과부하 문제라든가, 캐시 문제라든가 하는 것들을 처리한다면 하나의 솔루션이 될거고요.

피할 수 있을때 즐겨라! http://melotopia.net/b

oosap의 이미지

그런게 Ruby on Rails 인가 그건가요?

http://www.smartplace.kr/blog_post_70.aspx

Ruby 가 아마도 제가 말한 바로 그 XYZ 방법론에 해당할 것 같습니다.

이런 작업방식이 좋아보인 것은 데이타(text)를 한곳(.markdown 파일)에 작성해 두고 그것을 다양한 방식(HTML, PDF, EPUB, ...) 다양한 언어(Locale)로 원하는 대로 만들어내더라는 것이었어요. 데이타와 표현방식을 분리해서 관리하는게 너무 멋있어 보였거든요.

제가 모르는 것이 무엇인지도 몰랐는데 .. 감사합니다. ^^;

Thanks for being one of those who care for people and mankind.
I'd like to be one of those as well.

neocoin의 이미지

Ruby on Rails (이하 Rails)는 문서에 특화된 방법론보다는 웹서비스를 만드는 프레임웍입니다.
ProGit을 검색할때 Ruby 가 등장하는 이유는 github 웹서비스 파트의 기반 플렛폼이 Rails이고, 주 개발 언어가 Ruby이기 때문에 검색에 등장하는 것이라 추정합니다. 관련 공헌자들중 특히 github 개발자들이 보이네요. 특히, ProGit을 mobi 포멧으로 변환 방법을 공헌 하신분도 Ruby 개발자인것 같구요. ProGit 과 Ruby 는 별도로 생각하세요.

말씀하신 '책'이나 '문서'에 최적화된 방법론은 tex 이나, docbook 정도 일 것 같습니다. 그러나, 어쩌면 ProGit에서 사용한 markdown 에 비해 좀 더 생소할수 있습니다. markdown의 설계가 rtc 보듯이 원문을 읽는데 불편함이 없는 부분도 고려되어 있지만 이 둘은 정보 조직화에 촛점이 있으며, 중요한건 최종 출판물이라서 원문을 읽는 부분에서는 좀 더 취약합니다.

docbook 쪽은 제가 알고 있는 사항이 거의 없고 오래전에 kldp에서 이야기 되었던 것을 기억합니다.

* http://docbook.kr/

tex쪽은 아무래도 논문을 작성하는 고정 사용층이 꾸준히 있어서 오래전에 '한국텍학회'를 조직하고 정보를 교류하고 있습니다.

* http://www.ktug.or.kr/

창립할때 구경갔는데, 사례 발표중 인상깊은 것들이 많았습니다. (다국어 디바이스 설명서 제작, 병원의 자체 사전 제작등)

ProGit은 이와 별도로 협업과 컨텐츠 접근의 편이성으로 고유의 규칙을 정하고 markdown 을 기반으로 만든 것으로 생각하며 정립된 방법은 없는데요. 앞으로 이 방법이 온라인이나 도서를 만드는 방법론으로 정형화되기를 기대해야하는 정도라 생각합니다.

하도 오래전 부터 들어왔던 두가지 정보라서, 저는 '이정도가 있다' 정도를 공유한다고 생각하시면 될 것 같습니다.

oosap의 이미지

tex는 저는 잘 모르고요 docbook 은 올려주신 내용을 보니 좋은 방법 같습니다.

>>ProGit을 검색할때 Ruby 가 등장하는 이유는 github 웹서비스 파트의 기반 플렛폼이 Rails이고, 주 개발 언어가 Ruby이기 때문에 검색에 등장하는 것이라 추정합니다

제가 ruby 를 생각한 건 mobi 파일을 생성하는 방법에 관한 README 파일에서 아래 내용을 읽고서 입니다.
$ yum install ruby calibre rubygems ruby-devel rubygem-ruby-debug
$ gem install rdiscount
$ makeebooks en # will produce a mobi

docbook 도 좋고 progit 프로젝트의 방법은 협업에 유리한 방식을 취했다는 점에서 좋은 것 같아요.
progit 과 emacs 강좌 문서의 작성 방식은 별도로 스터디라도 할만한 주제인 것 같아요..

저는 이렇게 공개로 진행할 프로젝트도 없으면서 이런 고민 먼저 하네요 ^^;

언제나 좋은 정보 주셔서 감사드립니다..

Thanks for being one of those who care for people and mankind.
I'd like to be one of those as well.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.