Re: [O] wish: provide flush_right/right_aligned text rendering directive

2014-05-22 Thread Bastien
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

2014-05-22 Thread Sebastien Vauban
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

2014-05-22 Thread Bastien


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

2014-05-22 Thread Sebastien Vauban
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

2014-05-22 Thread Nicolas Goaziou


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

2014-05-22 Thread Nicolas Goaziou
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

2014-05-22 Thread Bastien
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

2014-05-21 Thread Gregor Zattler
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

2014-05-21 Thread Bastien
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

2014-05-21 Thread Nicolas Goaziou
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

2014-05-21 Thread Bastien
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

2014-05-21 Thread Nicolas Goaziou
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

2014-05-21 Thread Bastien
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

2014-05-21 Thread Nicolas Goaziou
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

2014-05-21 Thread Bastien
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

2014-05-21 Thread Nicolas Goaziou
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

2014-05-21 Thread Bastien
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

2014-05-21 Thread Nicolas Goaziou
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

2014-05-20 Thread Bastien
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

2014-05-10 Thread Gregor Zattler
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
-- 
 -... --- .-. . -.. ..--.. ...-.-