emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Is there a variable/way to change <div id="content"> to somethin


From: Eric Abrahamsen
Subject: Re: [O] Is there a variable/way to change <div id="content"> to something else, e.g. <div class="container"> for use with Bootstrap CSS?
Date: Mon, 26 May 2014 13:11:59 +0800
User-agent: Gnus/5.130012 (Ma Gnus v0.12) Emacs/24.4.50 (gnu/linux)

Omid <address@hidden> writes:

> I think I found the answer to my second question: in
> org-publish-project-alist, there is the property completion-function
> that can be set to a (list of) functions to do some post processing.
> My first question still stands, though.

Yup, that's a bit of a pain.

When you need to really mess with the results of an Org export, the way
to do it is through the "filter" system, not regular hooks. See the
comments under "The Filter System" in lisp/ox.el for details on that.

Filters give you access to the exported strings produced from various
elements in the org buffer. Unfortunately there isn't a filter that
reaches the contents template, which is where ox-html is setting the div
id, so you'll probably need to use the nuclear option:
org-export-filter-final-output-functions. Functions placed in that
variable get access to the whole export string, and you can just do a
search-and-replace for your id/class string there.

Yours,
Eric

> On 05/26/2014 12:08 AM, Omid wrote:
>> Thank you, Eric for your quick response.
>> - I am using Org mode 8.2.6 (from ELPA) and Emacs 24.3.1.
>> - org-html-divs does almost what I have been looking for, except for
>>   one, unfortunately crucial, shortcoming: I don't see any way of
>>   changing the "id" tag to "class". Bootstrap's container is a "class"
>>   and will not work as an "id". As far as see, I can only do
>> 
>>   (setq org-html-divs (quote ((preamble "div" "preamble")
>>   (content "div" "container")
>>   (postamble "div" "postamble"))))
>>                      
>>   Looking at ox-html.el I see that the "id" tag is hard coded:
>> 
>>   (list :tag "Content"
>>   (const :format "" content)
>>   (string :tag "element") (string :tag "     id"))
>> 
>>   Am I missing something here?
>> 
>> - I still could not find a "post publish" hook/variable. Neither
>>   apropos-variable with org publish, apropos with org publish gives me
>>   anything useful. C-h v reveals org-export-before-parsing-hook and
>>   org-export-before-processing-hook but I don't see anything with
>>   "after" or "post". The only way I see around my problem is to define
>>   an external publishing-function in org-publish-project-alist (maybe
>>   a makefile) and do the necessary post processing there. Any better
>>   suggestion is greatly appreciated.
>> 
>> Thanks,
>>              
>> Omid
>> 
>> Sent from my Emacs
>> 
>> On 05/25/2014 10:10 PM, Eric Abrahamsen wrote:
>>> Omid <address@hidden> writes:
>>>
>>>> Hello,
>>>>
>>>> - I am trying to build a statically-generated website purely with Org
>>>>   mode. I would like to use Bootstrap CSS to make the site mobile
>>>>   friendly. Bootstrap uses <div class="container"> for the "main" part
>>>>   of the <body> of HTML; Org mode export produces <div id="content">
>>>>   for that part.
>>>>
>>>>   Is there a variable to set/way to make Org wrap this part in the
>>>>   "container" class?
>>>>
>>>>   Looking at several "apropos" results (with all the search keywords I
>>>>   could think of), I only see a setting for pre/postamble-class:
>>>>
>>>>   org-html--pre/postamble-class
>>>>     Variable: CSS class used for pre/postamble
>>>
>>> It would help to know your Org mode version, but I'm pretty sure
>>> org-html-divs has been around for a bit. Check out its docstring, and
>>> modify its second element, which is '(content "div" "content") by
>>> default.
>>>
>>>> - Assuming there is no Org-internal way to do this, is there a
>>>>   function that is run after a project is published to that I can,
>>>>   e.g., run a sed script on the HTML files generated? Again, the only
>>>>   remotely relevant result I see in M-x apropos RET org post is
>>>>
>>>>   org-babel-post-tangle-hook
>>>>   Variable: Hook run in code files tangled by `org-babel-tangle'.
>>>>   Properties: standard-value custom-version custom-type
>>>>               custom-requests variable-documentation
>>>>
>>>> - As a "meta question", how would one find the answer to these and
>>>>   similar questions without leaving Emacs, since we know Emacs is
>>>>   self-documenting and Org mode has a very comprehensive set of
>>>>   functions and documentation. Looking in the usual places (C-u M-x
>>>>   apropos, C-h v) did not lead me to an answer.
>>>
>>> One good thing to know is that Org export variables related to a certain
>>> backend all start with org-BACKEND-*. So you could do C-h v org-html-TAB
>>> and see... a lot of variables. Still, that would (eventually) get you
>>> there. I did apropos-variable for "org html container" and that got me a
>>> similar list as C-h v, albeit slimmed down somewhat, and with
>>> docstrings.
>>>
>>> Hope that helps,
>>> Eric
>>>
>>>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]