2011-03-07 9 views
7

org-mode를 사용하여 웹 페이지를 게시하려고합니다. 두 가지 질문 :`org-publish-project-alist` 사용자 정의하기

  1. 방법을 "동기화"를 publishing-directory에서 base-directory의 조직 모드 파일과 HTML 파일이 있습니까? 특히 base-directory에있는 org 파일을 삭제하면 org-publish-html도 html 디렉토리의 해당 파일을 삭제할 수 있습니까?
  2. 하위 디렉토리 내에 페이지가있는 경우 어떻게 루트 디렉토리에 하나의 .css 파일을 스타일 시트로 사용하도록 지정할 수 있습니까?

    으로 public_html/

    • CSS/
      • mystyle.css
    • index.html을
    • 하위 디렉터리/
      • 인덱스를 다음과 같이 예를 들어, 내 디렉토리 구조는 .html
      org-publish-project-alist에서 다음과 같은 사양으로

(이 단지 일부) -

:publishing-directory "public_html" 
:style "<link rel=\"stylesheet\" href=\"css/mystyle.css\" type=\"text/css\"/>" 

mystyle.csspublic_html/index.html에 의해하지만 public_html/subdir/index.html에 의해 사용된다. 이 간단한 해결 방법이 있습니까 (하위 시트의 두 파일/모든 파일에서 스타일 시트를 사용하고 싶습니다)?

덕분에 훨씬 ~

답변

3
  1. 이 일을 더 간단한 방법이 없습니다. Org-mode은 게시 할 위치를 알지 못하거나 신경 쓰지 않습니다. 단지 위치 정보를 보내고 올바른 디렉토리 구조가 있는지 확인하기 만하면됩니다. 파일이 게시 된 위치로 푸시 된 후 호출되는 게시 프로세스의 후크가 있습니다. 이는 org-publish-project-alist:completion-function 속성을 설정하여 제어합니다. 당신은 * 첨부 * .html 중에서 게시 된 파일에 base-dir 및 하위 디렉토리에 파일을 .org와 비교하는 함수를 작성하기 위해이 훅을 사용하고, 동반을하지 않는 * .html 중에서 파일을 제거 할 수 있습니다 * .org 파일.

    나는 Lisp이 필요한 파일을 제거하는 쉘 스크립트를 호출함으로써 가장 쉽게 수행 할 수 있다고 생각한다. :include, :exclude 또는 :base-extension 속성을 사용하여 멋진 것을하고 있다면 completion-function에서 plist의 관련 정보를 가져 와서 쉘 스크립트로 전달하는 것이 좋습니다. This org-mode pageorg-publish-project-alist의 속성 값을 가져 오는 방법을 보여주는 예제 인 completion-function을 가지고 있습니다. 그런 다음 쉘 스크립트로 전달해야합니다.

  2. 이렇게하는 방법에는 여러 가지가 있습니다.

    #의 + 스타일 : : 아마도 간단한 그냥 라인 등 각 파일의 기본 스타일 시트를 대체하는 것입니다 < 링크에 rel = "스타일"유형 = "텍스트/CSS는"HREF = "../ stylesheet.css "/>

    첫 번째 수준의 하위 디렉토리 파일에 대해서는 ../을 계속 추가하여 디렉토리 구조가 더욱 깊어집니다.

    또 다른 가능성은 각 레벨에 대한 일반 템플릿 파일을 디렉토리 트리 내에서 생성하는 것입니다. This org-mode page이 설정 방법에 대한 좋은 예가 나와 있습니다.

    마지막으로 또 다른 옵션은 org-publish-project-alist이라는 :preparation-function 속성을 사용하여 각 파일의 스타일 파일을 자동으로 변경하는 기능을 정의하는 것입니다. 다시 말하지만, 이것은 아마도 Lisp preparation-function이 쉘 스크립트를 호출하여 파일을 파싱하는 것이 가장 좋습니다. 유닉스 sed 프로그램을 사용하여 href="@[email protected]/stylesheet.css" />과 같은 정규 표현식을 찾고 @ 사이의 내용을 디렉토리 트리 내 적절한 수준으로 대체하는 것을 상상해보십시오. 다른 옵션이 주어진다면 과도한 것처럼 보입니다.

+0

여기 너무 많이 ...하지만 그들을 시험해 보겠습니다. - 감사합니다! – hatmatrix