Hi Takeshi,

On Saturday, 26 October 2019 07:16:25 UTC+2, Komiya Takeshi wrote:
>
> Hi, 
>
> I'd like to see your your source code. Could you share it for us? 
>
First of all, I am very sorry for the late reply, I have been quite busy.

The good news is, however, that I made some more tests and I was able to 
have the ".. altrubric:: test" produce a \subsection*{test} in the latex 
output, as I wanted. 
Unfortunately, in the HTML the .. altrubric:: directive produces only a <p 
class="rubric">test</p>, which is unexpected and I have no idea how I could 
fix.

The code is the following, adapted from a few examples found in this group 
and elsewhere:

*****
class altrubric(nodes.rubric):
    pass

def visit_altrubric(self, node):
    # type: (nodes.Element) -> None
    if len(node) == 1 and node.astext() in ('Footnotes', _('Footnotes')):
        raise nodes.SkipNode
    self.body.append('\\subsubsection*{')
    self.context.append('}\n')
    self.in_title = 1
    
def depart_altrubric(self, node):
    # type: (nodes.Element) -> None
    self.in_title = 0
    self.body.append(self.context.pop())

    
def visit_altrubric_html(self, node):
    self.body.append(self.starttag(node, 'rubric', '',
                                      CLASS='rubric altrubric'))

def depart_altrubric_html(self, node):
    pass

class AltRubricDirective(SphinxDirective):  
    has_content = False
    required_arguments = 1

    def run(self):
        set_classes(self.options)
        altrubric_text = self.arguments[0]
        textnodes, messages = self.state.inline_text(altrubric_text, 
self.lineno)
        altrubric = nodes.rubric(altrubric_text, '', *textnodes, 
**self.options)
        self.add_name(altrubric)
        return [altrubric] + messages

def setup(app):
    app.add_node(altrubric,
                 html=(visit_altrubric_html, depart_altrubric_html),
                 epub=(visit_altrubric, depart_altrubric),
                 latex=(visit_altrubric, depart_altrubric))
*****
I also tried to move visit_altrubric_html, depart_altrubric_html to the 
html.py writer class, without any change in the output. Same result even 
using other examples from the html builder, like e.g. atts['class'] += 
'altrubric'. I also tried to add the class directly in the class 
altrubric(nodes.rubric), again with no results.

BTW, rubric directive takes :class: option to give CSS class for the 
> node in HTML output. I think it might help your case. 
>
No, it does not seem to help in this case, because the container creates a 
<div> <p>...</p></div>, while the rubric a single <p class="rubric 
altrubric">..</p> which for some reasons receives only the rubric's CSS and 
the .altrubric>:before CSS rule does not work anymore. (but this is a 
problem which is OT here and I can not investigate right now, because it 
would require quite a number of changes).

Thank you and best regards,
Stefano

-- 
You received this message because you are subscribed to the Google Groups 
"sphinx-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sphinx-users/39b36f73-1de5-4ba1-b391-ebd615140f21%40googlegroups.com.

Reply via email to