• 用emacs orgmode写cnblogs博客(续)


    用emacs org-mode写cnblogs博客(续)

    1 前言

    前面在博文《用emacs org-mode写cnblogs博客》中已经提到了可以使用org-mode写完博客,然后用org-export-as-html导出网页代码,粘贴到博客园后台可以实现,但是还是比较麻烦的。也提到了有人使用webblogger来写cnblogs,但是由于cnblogs使用metaweblog api,导致在使用中遇到很多问题,如博文《(未解决)使用emacs写cnblogs1所述。不过非常非常感谢 open source,在自学elisp后写了一个插件能够很方便使用emacs来实现cnblogs的博文发布,更新,删除等。真心非常感动,开源世界就是因为有你们这类人存在,才使得问题不断地被解决,相关博文可以移步《用Emacs管理博客园博客2。下面我主要讲下在使用这个插件中遇到的一些问题。

    2 博客发文

    首先下载了插件以后(下载链接) ,安装好,填写博客地址,账号密码信息。然后打开一个需要发文的org文件,打开cnblogs插件的minor模式(M-x cnblogs-minor-mode)。然后使用快捷键C-c c p 就发送成功了,相当的方便。删除,更新博文也是同样类似的操作。

    3 发文中的博客代码格式背景的问题

    在书写博客时,可以使用org自带的 {#+BEGIN_CENTER #+END_CENTER}功能调整文字,图片居中。使用{#+BEGIN_SRC #+END_SRC}插入代码。但是org中的代码颜色是使用htmlize来着色的,它可以根据当前主题背景来选择代码着色方案的。比如我的emacs主题是color-theme-gnome2,背景是相对偏暗的。org中的着色效果如下:

    class Color_Theme extends Parent implements Interface {
        public static void main(String[] args) {
            System.out.println("这是我的代码着色效果");
        }
        }
    

    但是,使用cnblogs插件发文的时候其实是调用了org的一个html导出函数:org-export-as-html.在没有任何html导出style设置的时候,他会使用org-export-html-style-default的css样式直接嵌入导出的html中,样式代码如下。

    (defconst org-export-html-style-default
    "<style type=\"text/css\">
     <!--/*--><![CDATA[/*><!--*/
      html { font-family: Times, serif; font-size: 12pt; }
      .title  { text-align: center; }
      .todo   { color: red; }
      .done   { color: green; }
      .tag    { background-color: #add8e6; font-weight:normal }
      .target { }
      .timestamp { color: #bebebe; }
      .timestamp-kwd { color: #5f9ea0; }
      .right  {margin-left:auto; margin-right:0px;  text-align:right;}
      .left   {margin-left:0px;  margin-right:auto; text-align:left;}
      .center {margin-left:auto; margin-right:auto; text-align:center;}
      p.verse { margin-left: 3% }
      pre {
        border: 1pt solid #AEBDCC;
        background-color: #F3F5F7;
        padding: 5pt;
        font-family: courier, monospace;
            font-size: 90%;
            overflow:auto;
      }
      table { border-collapse: collapse; }
      td, th { vertical-align: top;  }
      th.right  { text-align:center;  }
      th.left   { text-align:center;   }
      th.center { text-align:center; }
      td.right  { text-align:right;  }
      td.left   { text-align:left;   }
      td.center { text-align:center; }
      dt { font-weight: bold; }
      div.figure { padding: 0.5em; }
      div.figure p { text-align: center; }
      div.inlinetask {
        padding:10px;
        border:2px solid gray;
        margin:10px;
        background: #ffffcc;
      }
      textarea { overflow-x: auto; }
      .linenr { font-size:smaller }
      .code-highlighted {background-color:#ffff00;}
      .org-info-js_info-navigation { border-style:none; }
      #org-info-js_console-label { font-size:10px; font-weight:bold;
                                   white-space:nowrap; }
      .org-info-js_search-highlight {background-color:#ffff00; color:#000000;
                                     font-weight:bold; }
      /*]]>*/-->
    </style>"
      "The default style specification for exported HTML files.
    Please use the variables `org-export-html-style' and
    `org-export-html-style-extra' to add to this style.  If you wish to not
    have the default style included, customize the variable
    `org-export-html-style-include-default'.")
    

    这段代码可以在emacs的主目录/lisp/org/org-html.el中找到,可以看到其中对于代码着色的背景pre块是设置死了的。而这个背景是偏淡色的,这样就导致了最终导出的博文代码着色效果非常糟糕,看不清楚。 解决方法原理: org中的代码导出是有变量org-export-html-style-default,org-export-html-style-include-default,org-export-html-style等控制的,其中后面两个变量可以customize.如果org-export-html-style-include-default变量为真(默认为真),那么org就会使用default-style,再叠加上org-export-html-style成为最终的css样式。(cnblogs中还要加上网页中的css设置)。 所以我的方案是设置org-export-html-style的值为:

    <style type="text/css">
      pre {
        background-color: #2f4f4f;line-height: 1.6;
      FONT: 10.5pt Consola,"Bitstream Vera Sans", Courier New, helvetica;
      color:wheat;
      }
    </style>
    

    4 结束语

    OK~。emacs写到这里就C-c c p推送了,网页立马更新。。。非常流畅,再次感谢Open_Source博友所做的贡献(PS.才刚研究,还不知道怎么让博文推送到指定的分类以及博文的置顶,置首页操作)

    Date: 2012-11-16 19:29:29 中国标准时间

    Author: csophys

    Org version 7.8.11 with Emacs version 24

    Validate XHTML 1.0
  • 相关阅读:
    listener中@Autowired无法注入bean的一种解决方法
    PBKDF2加密的实现
    springmvc集成shiro后,session、request是否发生变化
    java加密解密工具类
    springMVC中controller层方法中使用private和public问题
    密码强度正则表达式 – 必须包含大写字母,小写字母和数字,至少8个字符等
    Java判断两个时间相差的天数
    Java中Date、String、Calendar类型之间的转化
    JavaScript前端和Java后端的AES加密和解密(转)
    JS前端加密JAVA后端解密详解
  • 原文地址:https://www.cnblogs.com/csophys/p/2773812.html
Copyright © 2020-2023  润新知