Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 自定义“组织发布项目列表”`_Html_Emacs_Org Mode - Fatal编程技术网

Html 自定义“组织发布项目列表”`

Html 自定义“组织发布项目列表”`,html,emacs,org-mode,Html,Emacs,Org Mode,我正在尝试使用组织模式发布网页。两个问题: 是否有方法“同步”基本目录中的组织模式文件和发布目录中的html文件?具体来说,如果我删除了基本目录中的一个org文件,我是否可以让org publish html也删除html目录中的相应文件 如果子目录中有页面,如何在根目录中指定一个.css文件用于样式表?例如,我的目录结构如下: 公共网页/ css/ mystyle.css index.html 细分/ index.html 使用org publish project alist中的

我正在尝试使用组织模式发布网页。两个问题:

  • 是否有方法“同步”基本目录中的组织模式文件和发布目录中的html文件?具体来说,如果我删除了
    基本目录中的一个org文件
    ,我是否可以让
    org publish html
    也删除html目录中的相应文件
  • 如果子目录中有页面,如何在根目录中指定一个
    .css
    文件用于样式表?例如,我的目录结构如下:

    公共网页/

    • css/
      • mystyle.css
    • index.html
    • 细分/
      • index.html
  • 使用
    org publish project alist
    中的以下规范(这只是一个子集)--

    :发布目录“public\u html”
    :样式“”
    
    mystyle.css
    public\u html/index.html
    使用,但不由
    public\u html/subdir/index.html
    使用。有没有简单的补救办法(我希望子目录中的两个/所有文件都使用样式表)

    多谢~

  • 没有直接的方法可以做到这一点<代码>组织模式不知道(或不关心)它发布到的位置-它只是将内容发送到那里,并确保存在正确的目录结构。发布过程中有一个钩子,在文件被推送到其发布位置后调用该钩子。这是通过在
    组织发布项目列表中设置
    :completion function
    属性来控制的。您可以使用此钩子编写一个函数,将
    基本目录
    和子目录中的*.org文件与附带的*.html发布文件进行比较,并删除那些没有附带*.org文件的*.html文件

    我想,通过让您的Lisp
    完成函数调用一个shell脚本来删除必要的文件,最容易实现这一点。如果您正在使用
    :include
    :exclude
    :base extension
    属性进行一些有趣的操作,您可能希望
    完成函数
    plist
    获取相关信息,然后将它们传递给shell脚本。有一个示例
    完成函数
    ,它显示了如何为
    组织发布项目列表
    获取属性值。然后需要将它们传递给shell脚本

  • 有几种方法可以做到这一点。也许最简单的方法是用一行替代每个文件中的默认样式表,例如:

    #+风格:

    对于第一级子目录文件,请在目录结构深入时继续添加
    。/

    另一种可能性是为目录树中的每个级别生成通用模板文件。提供了一个很好的示例,说明如何设置此选项

    最后,另一个选项是使用
    org publish project alist
    :preparation function
    属性定义一个函数,该函数将自动更改每个文件的样式文件。同样,最好使用Lisp
    准备函数调用shell脚本来解析文件。我可以想象用Unix
    sed
    程序来找到一个表示为
    href=“@MYLOC@/stylesheet.css”/>
    之类的正则表达式,并用目录树中的适当级别替换
    @
    之间的内容。考虑到其他选择,这似乎有些过分了

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