What follows is a lengthy explanation and then two questions: by way of summary, I've run across what I think might be a bug, or perhaps a request for enhancement, and I'd like to request a change in Sphinx's behaviour...
Background --- I have been using my own theme, based on Haiku, that uses the template variables {{ next.title }} and {{ prev.title }} in order to show the title of a topic's related pages, building links to those pages. Also, I have been using the .. title:: directive in my topics in order to have a title that I can render in the "title bar" of my HTML output pages and not have a title like this: ==== Title ==== Show up on the page right under the title bar. Instead, I do this: .. title:: Title Introductory paragraph of topic page. First section title -------------------- It looks nicer in our rendered HTML docs. Until very recently, I could have sworn that when I used a construction like that, the templating variables passed down to jinja gave "prev.title" and "next.title" as the text found in the .. title:: directive (i.e. in this case, prev.title if my example were the previous topic would resolve to "TItle", and not "First section title"). However, within the past week or so that's now changed -- now (with Sphinx 1.1.2 and docutils 0.8.1), with my example, prev.title resolves to "First section title" and not "Title". After digging into the source, I found that if I made a subtle change to the html.py builder file's definition of StandaloneHTMLBuilder.get_doc_context(self,docname,body,metatags), I could fix this. Previously, the first variable assignments in that method did this: prev = next = None parents = [] rellinks = self.globalcontext['rellinks'][:] related = self.relations.get(docname) titles = self.env.titles I changed the definition of titles to this: titles = self.env.longtitles Checking env, I noticed that longtitles[] was meant to be "the same as titles[], unless you use the ..titles:: directive to override it". Request --- I don't necessarily mean to suggest I've uncovered a bug, but I think it'd be useful to let the use of .. title:: get through to the templating level in the way I'm using it, especially at some point in the past month or so, it did seem to be doing this (I have sadly been unable to reproduce a precise version of Sphinx+docutils that does, in fact, confirm my memory that it worked this way at one point). I can see two ways to address this issue -- the quick and dirty way seems to be to set the "title" properties for the related nodes (like next and prev) that the template can refer to, to a value taken from the longtitles list rather than the titles list. This way .. titles:: will always override a title set in the document's body itself. However, I can also see that the /right/ way to fix this might be to expose a "prev.title" property /and/ a "prev.metatitle" property to the templating level so that both bits of information might be available. I'm not at all comfortable enough with the codebase to suggest how that might be done, though. Indeed, I have no confidence that my change to the source is even the right way to implement the "quick fix": it works for my narrow use case, as far as I can tell, but it might break other things, or not be best implemented there. Does anyone have any thoughts on this matter? Can anyone make suggestions on how it /might/ be best to implement this change, to expose the contents of .. title:: up to the templating level through the 'next' and 'prev' related nodes? Thanks, -- Viktor Haag -- You received this message because you are subscribed to the Google Groups "sphinx-dev" group. To view this discussion on the web visit https://groups.google.com/d/msg/sphinx-dev/-/VK3x03XGkMUJ. To post to this group, send email to sphinx-dev@googlegroups.com. To unsubscribe from this group, send email to sphinx-dev+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sphinx-dev?hl=en.