Re: [O] wish: provide flush_right/right_aligned text rendering directive
Hi Nicolas, Nicolas Goaziou n.goaz...@gmail.com writes: Well, actually it required more work than I thought. Here is the patch, with some documentation. I didn't test it thoroughly, so feedback is welcome. I tested it with paragraphs and tables and didn't find any problem, thanks a lot for implementing this. I think the new BEGIN_JUSTIFY* special blocks should be added to the list of possible expansions. Feel free to commit this when you want, -- Bastien
Re: [O] wish: provide flush_right/right_aligned text rendering directive
Nicolas Goaziou wrote: In addition to @code{#+BEGIN_CENTER} blocks (@pxref{Paragraphs}), it is possible to justify contents to the left or the right of the page with the following dedicated blocks. @example #+BEGIN_JUSTIFYLEFT It's just a jump to the left #+END_JUSTIFYLEFT #+BEGIN_JUSTIFYRIGHT And then a step to the right. #+END_JUSTIFYRIGHT @end example Do I understand correctly that those won't be converted to their HTML and LaTeX counterparts (flushright and raggedleft)? Shouldn't it be better to make that conversion as well for the back-ends which support such features? Best regards, Seb -- Sebastien Vauban
Re: [O] wish: provide flush_right/right_aligned text rendering directive
Hi Sébastien, Sebastien Vauban sva-news-D0wtAvR13HarG/idocf...@public.gmane.org writes: Do I understand correctly that those won't be converted to their HTML and LaTeX counterparts (flushright and raggedleft)? For HTML, the user can define a new class justifyright. For LaTeX, yes, we should probably handle this as \begin{flushright}. Shouldn't it be better to make that conversion as well for the back-ends which support such features? When it comes to consistency, I kinda fully trust Nicolas, don't worry. I guess it's just a matter of taking the time to polish this a bit. -- Bastien
Re: [O] wish: provide flush_right/right_aligned text rendering directive
Bastien wrote: Sebastien Vauban sva-n...@mygooglest.com writes: Do I understand correctly that those won't be converted to their HTML and LaTeX counterparts (flushright and raggedleft)? For HTML, the user can define a new class justifyright. For LaTeX, yes, we should probably handle this as \begin{flushright}. Shouldn't it be better to make that conversion as well for the back-ends which support such features? When it comes to consistency, I kinda fully trust Nicolas, don't worry. So do I! ;-) I guess it's just a matter of taking the time to polish this a bit. Best regards, Seb -- Sebastien Vauban
Re: [O] wish: provide flush_right/right_aligned text rendering directive
Hello, Sebastien Vauban sva-news-D0wtAvR13HarG/idocf...@public.gmane.org writes: Nicolas Goaziou wrote: In addition to @code{#+BEGIN_CENTER} blocks (@pxref{Paragraphs}), it is possible to justify contents to the left or the right of the page with the following dedicated blocks. @example #+BEGIN_JUSTIFYLEFT It's just a jump to the left #+END_JUSTIFYLEFT #+BEGIN_JUSTIFYRIGHT And then a step to the right. #+END_JUSTIFYRIGHT @end example Do I understand correctly that those won't be converted to their HTML and LaTeX counterparts (flushright and raggedleft)? Correct. As Bastien pointed out, there are means to achieve the same in other back-ends. Shouldn't it be better to make that conversion as well for the back-ends which support such features? For some values of better only. At the moment, these blocks belong to the special blocks category, aka do whatever back-end specific stuff you want category. This category is convenient because it doesn't require to extend Org syntax, and it has room left in some back-ends (like ascii, but not in latex and html, which handle all possible special blocks already). What you are asking is to move out these blocks from the special blocks category (because, again, there is no room left in html and latex), and, as a consequence, create a new syntax element in Org. While this is possible, it implies to extend the parser to handle it, and, more importantly, to ask all serious export back-ends in the wild to do their best to support the new feature (if they don't provide a transcoder, all contents will be ignored without notice). My opinion is that the feature is a) not important enough and b) somehow already available in Org. I'm all for consistency, but in this particular case, the benefit is way too slim. Regards, -- Nicolas Goaziou
Re: [O] wish: provide flush_right/right_aligned text rendering directive
Hello, Bastien b...@gnu.org writes: Feel free to commit this when you want, Polished and applied. Regards, -- Nicolas Goaziou
Re: [O] wish: provide flush_right/right_aligned text rendering directive
Nicolas Goaziou n.goaz...@gmail.com writes: Polished and applied. Thanks! And I agree this does not need to be something else than a special block. -- Bastien
Re: [O] wish: provide flush_right/right_aligned text rendering directive
Hi Bastien, * Bastien b...@gnu.org [21. May. 2014]: Gregor Zattler telegr...@gmx.net writes: I wish for a #+BEGIN_FLUSH_RIGHT (#+BEGIN_RIGHT_ALIGNED) directive in order to render text right flushed (right aligned) in export backends. Just out of curiosity, what backend do you need this for? In the use case for which I wished this is ASCII/Latin-1/UTF-8 export. I write letters in org-mode and right flush would be useful for the letter header part with my address. If I have to cooperate with people who do not know how to collectively produce plain text documents, I use the html and odt backends. Ciao, Gregor -- -... --- .-. . -.. ..--.. ...-.-
Re: [O] wish: provide flush_right/right_aligned text rendering directive
Hi Gregor, Gregor Zattler telegr...@gmx.net writes: In the use case for which I wished this is ASCII/Latin-1/UTF-8 export. I write letters in org-mode and right flush would be useful for the letter header part with my address. If I have to cooperate with people who do not know how to collectively produce plain text documents, I use the html and odt backends. Thanks -- I don't have time for this right now, but maybe someone will. I noted it as a feature request in my local TODO list. Please use [FR] in your subject line for next feature requests. Best, -- Bastien
Re: [O] wish: provide flush_right/right_aligned text rendering directive
Hello, Bastien b...@gnu.org writes: Gregor Zattler telegr...@gmx.net writes: In the use case for which I wished this is ASCII/Latin-1/UTF-8 export. I write letters in org-mode and right flush would be useful for the letter header part with my address. Thanks -- I don't have time for this right now, but maybe someone will. I noted it as a feature request in my local TODO list. Please use [FR] in your subject line for next feature requests. I don't know what you mean by this, but I don't think introducing a new type of block in Org syntax is worth the trouble here. Also, the feature is already available in some others back-ends, e.g., LaTeX, through a special block. ISTM this is only related to `ascii' export back-end. So it could be solved by a special block handled specially in there. Regards, -- Nicolas Goaziou
Re: [O] wish: provide flush_right/right_aligned text rendering directive
Hi Nicolas, Nicolas Goaziou n.goaz...@gmail.com writes: Also, the feature is already available in some others back-ends, e.g., LaTeX, through a special block. Mh, yes. In other words, #+begin_flushright Hello #+end_flushright will be exported as div class=flushright p Hello /p /div in HTML. ISTM this is only related to `ascii' export back-end. So it could be solved by a special block handled specially in there. Yes, good idea. Can you take care of it? -- Bastien
Re: [O] wish: provide flush_right/right_aligned text rendering directive
Bastien b...@gnu.org writes: Yes, good idea. Can you take care of it? I can look into it. What shall be the name of the block? latex uses raggedleft, html flushright... Regards, -- Nicolas Goaziou
Re: [O] wish: provide flush_right/right_aligned text rendering directive
Nicolas Goaziou n.goaz...@gmail.com writes: What shall be the name of the block? latex uses raggedleft, html flushright... Maybe begin_justifyright begin_justifyleft begin_justifyfull to reuse the Emacs terminology for text alignment? -- Bastien
Re: [O] wish: provide flush_right/right_aligned text rendering directive
Bastien b...@gnu.org writes: Maybe begin_justifyright begin_justifyleft begin_justifyfull to reuse the Emacs terminology for text alignment? I find it a bit verbose, but probably clearer than begin_right and begin_left. OTOH, I'd rather not implement justifyfull as it is not necessary at the time being and requires more work. Regards, -- Nicolas Goaziou
Re: [O] wish: provide flush_right/right_aligned text rendering directive
Nicolas Goaziou n.goaz...@gmail.com writes: I find it a bit verbose, but probably clearer than begin_right and begin_left. My impression too... OTOH, I'd rather not implement justifyfull as it is not necessary at the time being and requires more work. Can't this be done with `default-justification' set to 'full? Anyway, I agree full justification is *bad*. -- Bastien
Re: [O] wish: provide flush_right/right_aligned text rendering directive
Bastien b...@gnu.org writes: Can't this be done with `default-justification' set to 'full? Alas, only in the simple cases. The block may contain elements that needs to be treated differently, e.g., tables. Regards, -- Nicolas Goaziou
Re: [O] wish: provide flush_right/right_aligned text rendering directive
Nicolas Goaziou n.goaz...@gmail.com writes: Bastien b...@gnu.org writes: Can't this be done with `default-justification' set to 'full? Alas, only in the simple cases. The block may contain elements that needs to be treated differently, e.g., tables. Yes -- I suggest we simply put this aside for the moment. -- Bastien
Re: [O] wish: provide flush_right/right_aligned text rendering directive
Bastien b...@gnu.org writes: Yes -- I suggest we simply put this aside for the moment. Well, actually it required more work than I thought. Here is the patch, with some documentation. I didn't test it thoroughly, so feedback is welcome. Regards, -- Nicolas Goaziou From 744ee75b33ce1dea299626621558901d9ada09ef Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou n.goaz...@gmail.com Date: Wed, 21 May 2014 23:37:00 +0200 Subject: [PATCH] ox-ascii: Implement justifyright and justifyleft blocks * lisp/ox-ascii.el (org-ascii--justify-lines): New function. Renamed from `org-ascii--justify-string'. (org-ascii--justify-element, org-ascii--current-justification): New functions. (org-ascii-verse-block, org-ascii-table-cell, org-ascii-table org-ascii-src-block, org-ascii-property-drawer, org-ascii-planning, org-ascii-paragraph, org-ascii-paragraph, org-ascii-latex-environment, org-ascii-horizontal-rule, org-ascii-fixed-width, org-ascii-export-block, org-ascii-example-block, org-ascii-clock, org-ascii-center-block, org-ascii-template--document-title, org-ascii-template--document-title): Use new functions. * doc/org.texi (ASCII/Latin-1/UTF-8 export): Document new feature. This patches also fixes centering of tables. --- doc/org.texi | 19 + lisp/ox-ascii.el | 227 +++ 2 files changed, 165 insertions(+), 81 deletions(-) diff --git a/doc/org.texi b/doc/org.texi index c685748..9cf0d7f 100644 --- a/doc/org.texi +++ b/doc/org.texi @@ -10804,6 +10804,25 @@ specified using an @code{ATTR_ASCII} line, directly preceding the rule. - @end example +@subheading ASCII special blocks +@cindex special blocks, in ASCII export +@cindex #+BEGIN_JUSTIFYLEFT +@cindex #+BEGIN_JUSTIFYRIGHT + +In addition to @code{#+BEGIN_CENTER} blocks (@pxref{Paragraphs}), it is +possible to justify contents to the left or the right of the page with the +following dedicated blocks. + +@example +#+BEGIN_JUSTIFYLEFT +It's just a jump to the left +#+END_JUSTIFYLEFT + +#+BEGIN_JUSTIFYRIGHT +And then a step to the right. +#+END_JUSTIFYRIGHT +@end example + @node Beamer export @section Beamer export @cindex Beamer export diff --git a/lisp/ox-ascii.el b/lisp/ox-ascii.el index 858e3f0..b7ed268 100644 --- a/lisp/ox-ascii.el +++ b/lisp/ox-ascii.el @@ -385,14 +385,14 @@ nil to ignore the inline task. ;; Internal functions fall into three categories. -;; The first one is about text formatting. The core function is -;; `org-ascii--current-text-width', which determines the current -;; text width allowed to a given element. In other words, it helps -;; keeping each line width within maximum text width defined in -;; `org-ascii-text-width'. Once this information is known, -;; `org-ascii--fill-string', `org-ascii--justify-string', -;; `org-ascii--box-string' and `org-ascii--indent-string' can -;; operate on a given output string. +;; The first one is about text formatting. The core functions are +;; `org-ascii--current-text-width' and +;; `org-ascii--current-justification', which determine, respectively, +;; the current text width allowed to a given element and its expected +;; justification. Once this information is known, +;; `org-ascii--fill-string', `org-ascii--justify-lines', +;; `org-ascii--justify-element' `org-ascii--box-string' and +;; `org-ascii--indent-string' can operate on a given output string. ;; The second category contains functions handling elements listings, ;; triggered by #+TOC: keyword. As such, `org-ascii--build-toc' @@ -421,7 +421,8 @@ a communication channel. Optional argument JUSTIFY can specify any type of justification among `left', `center', `right' or `full'. A nil value is equivalent to `left'. For a justification that doesn't also fill -string, see `org-ascii--justify-string'. +string, see `org-ascii--justify-lines' and +`org-ascii--justify-block'. Return nil if S isn't a string. ;; Don't fill paragraph when break should be preserved. @@ -436,8 +437,8 @@ Return nil if S isn't a string. (fill-region (point-min) (point-max) justify)) (buffer-string)) -(defun org-ascii--justify-string (s text-width how) - Justify string S. +(defun org-ascii--justify-lines (s text-width how) + Justify all lines in string S. TEXT-WIDTH is an integer specifying maximum length of a line. HOW determines the type of justification: it can be `left', `right', `full' or `center'. @@ -453,6 +454,40 @@ HOW determines the type of justification: it can be `left', (forward-line))) (buffer-string))) +(defun org-ascii--justify-element (contents element info) + Justify CONTENTS of ELEMENT, as a block. +INFO is a plist used as a communication channel. Justification +is done according to the widest non blank line in CONTENTS. It +is appropriate for regular (i.e, non-greater) elements, except +paragraphs, which should be filled instead. + (if (not (org-string-nw-p contents)) contents +(let ((text-width
Re: [O] wish: provide flush_right/right_aligned text rendering directive
Hi Gregor, Gregor Zattler telegr...@gmx.net writes: I wish for a #+BEGIN_FLUSH_RIGHT (#+BEGIN_RIGHT_ALIGNED) directive in order to render text right flushed (right aligned) in export backends. Just out of curiosity, what backend do you need this for? Cheers, -- Bastien
[O] wish: provide flush_right/right_aligned text rendering directive
Dear org-mode developers, org-modes default for typographic alignment is flush left (or left aligned) (at least for (ltr scripts). There is a #+BEGIN_CENTER formatting directive, though. I wish for a #+BEGIN_FLUSH_RIGHT (#+BEGIN_RIGHT_ALIGNED) directive in order to render text right flushed (right aligned) in export backends. [For the sake of consitenzy one might also wish for a #+BEGIN_JUSTIFIED directive, but at the moment I have no use case for this.] Ciao, Gregor -- -... --- .-. . -.. ..--.. ...-.-