Re: inputencoding "default" again

2007-01-17 Thread Georg Baum
Am Dienstag, 16. Januar 2007 10:50 schrieb Dov Feldstern:
> I just spent two hours playing around with this, and it turns out that 
> the problem *is* with the way LyX is writing the output. I don't exactly 
> understand what's going on, but I was able to fix it with a really 
> simple patch (attached) --- although since I don't exactly understand 
> the problem, I can't vouch for the patch's correctness. It does work for 
> me, however.
> 
> If you want to see the example file I worked with, I can give it to you, 
> but I'd rather not post it publicly (it's an old version of my CV). Is 
> there any way for me to get it to you privately?

Dov sent me the file, and I found the problem. When I added the 
switchEncoding call after the paragraph I assumed that outputting 
additional newlines would not harm, since we are at a paragraph end 
anyway. This is not true in general, if we have a size change LyX will 
create code like this:


\par\end{center}{\LARGE \par}

\begin{spacing}{1.20}


If the paragraph needs an encoding change at the end this will become:


\par\end{center}{\LARGE \par}
\inputencoding{latin9}

\begin{spacing}{1.20}


This results in an additional empty paragraph. Therefore this patch avoids 
the additional newline with the help of a new flag pending_newline, and 
the output will look now like this:


\par\end{center}{\LARGE \par}\inputencoding{latin9}

\begin{spacing}{1.20}


The patch is going in now, since it fixes a regression to 1.4.x (Dov's 
document now has identical output with inputenc == "default" and 
with "auto"). The call of switchEncoding() before the paragraph start does 
not need to be changed, similar code is also in 1.4.x, and it does not 
harm.


Georg
Index: src/output_latex.C
===
--- src/output_latex.C	(Revision 16739)
+++ src/output_latex.C	(Arbeitskopie)
@@ -393,14 +393,13 @@ TeXOnePar(Buffer const & buf,
 	} else if (is_command)
 		os << '}';
 
+	bool pending_newline = false;
 	switch (style->latextype) {
 	case LATEX_ITEM_ENVIRONMENT:
 	case LATEX_LIST_ENVIRONMENT:
 		if (boost::next(pit) != paragraphs.end()
-		&& (pit->params().depth() < boost::next(pit)->params().depth())) {
-			os << '\n';
-			texrow.newline();
-		}
+		&& (pit->params().depth() < boost::next(pit)->params().depth()))
+			pending_newline = true;
 		break;
 	case LATEX_ENVIRONMENT: {
 		// if its the last paragraph of the current environment
@@ -416,10 +415,8 @@ TeXOnePar(Buffer const & buf,
 		// fall through possible
 	default:
 		// we don't need it for the last paragraph!!!
-		if (boost::next(pit) != paragraphs.end()) {
-			os << '\n';
-			texrow.newline();
-		}
+		if (boost::next(pit) != paragraphs.end())
+			pending_newline = true;
 	}
 
 	if (!pit->forceDefaultParagraphs()) {
@@ -427,9 +424,12 @@ TeXOnePar(Buffer const & buf,
 			&& (boost::next(pit) == paragraphs.end()
 			|| !boost::next(pit)->hasSameLayout(*pit)))
 		{
-			os << from_ascii(pit->params().spacing().writeEnvirEnd())
-			   << '\n';
-			texrow.newline();
+			if (pending_newline) {
+os << '\n';
+texrow.newline();
+			}
+			os << from_ascii(pit->params().spacing().writeEnvirEnd());
+			pending_newline = true;
 		}
 	}
 
@@ -439,19 +439,21 @@ TeXOnePar(Buffer const & buf,
 		// we need to reset the language at the end of footnote or
 		// float.
 
+		if (pending_newline) {
+			os << '\n';
+			texrow.newline();
+		}
 		if (lyxrc.language_command_end.empty())
 			os << from_ascii(subst(
 lyxrc.language_command_begin,
 "$$lang",
-doc_language->babel()))
-			   << '\n';
+doc_language->babel()));
 		else
 			os << from_ascii(subst(
 lyxrc.language_command_end,
 "$$lang",
-language->babel()))
-			   << '\n';
-		texrow.newline();
+language->babel()));
+		pending_newline = true;
 	}
 
 	// FIXME we switch from the encoding of this paragraph to the
@@ -459,8 +461,9 @@ TeXOnePar(Buffer const & buf,
 	// to take the encoding of the next paragraph into account.
 	// This may result in some unneeded encoding changes.
 	basefont = pit->getLayoutFont(bparams, outerfont);
-	if (switchEncoding(os, bparams, *(basefont.language()->encoding()),
-	   outer_encoding)) {
+	switchEncoding(os, bparams, *(basefont.language()->encoding()),
+	   outer_encoding);
+	if (pending_newline) {
 		os << '\n';
 		texrow.newline();
 	}


Re: inputencoding "default" again

2007-01-16 Thread Georg Baum
Am Dienstag, 16. Januar 2007 10:50 schrieb Dov Feldstern:

> I just spent two hours playing around with this, and it turns out that 
> the problem *is* with the way LyX is writing the output.

That is good, because it means that we can fix it.

> I don't exactly  
> understand what's going on, but I was able to fix it with a really 
> simple patch (attached) --- although since I don't exactly understand 
> the problem, I can't vouch for the patch's correctness. It does work for 
> me, however.

When I did something similar in one of the first versions of the patch it 
had the effect that a paragraph break vanished, but since I have a test 
case for that it should be possible to revise the patch so that it works 
in both cases.

> If you want to see the example file I worked with, I can give it to you, 
> but I'd rather not post it publicly (it's an old version of my CV). Is 
> there any way for me to get it to you privately?

Just send it to my email address.


Georg



Re: inputencoding "default" again

2007-01-16 Thread Dov Feldstern

Georg Baum wrote:

Am Sonntag, 14. Januar 2007 13:18 schrieb Dov Feldstern:


One strange thing that I'm seeing, though, is that the dvi output when 
using "auto" and "default" is not identical: I tried this out on a file 
which fits really tightly on the page --- when using "default" it all 
fits on one page, but when using "auto" it doesn't. I don't know if this 
matters or not, but it's a little strange. If you're interested in 
following this up, I can give you the files, but I don't think that this 
is something which should hold anything up.



There are two possible reasons I can think of:

a) the \inputencoding command causes additional whitespace
b) LyX outputs some additional whitespace before or after \inputencoding 
commands.


It would be nice if you could check whether b) is the case by manually 
removing all whitespace before and/or after \inputencoding commands 
leaving paragraph breaks intact of course). Does it then fit on one page? 
If yes, we should fix the output of LyX, and I would be interested in the 
example file. If not, we cannot do anything.



Georg




Hi!

I just spent two hours playing around with this, and it turns out that 
the problem *is* with the way LyX is writing the output. I don't exactly 
understand what's going on, but I was able to fix it with a really 
simple patch (attached) --- although since I don't exactly understand 
the problem, I can't vouch for the patch's correctness. It does work for 
me, however.


If you want to see the example file I worked with, I can give it to you, 
but I'd rather not post it publicly (it's an old version of my CV). Is 
there any way for me to get it to you privately?


Hope this helps!
Dov
Index: src/output_latex.C
===
--- src/output_latex.C  (revision 16673)
+++ src/output_latex.C  (working copy)
@@ -307,7 +307,7 @@
// account. This may result in some unneeded encoding changes.
if (switchEncoding(os, bparams, outer_encoding,
   *(basefont.language()->encoding( {
-   os << '\n';
+   os << "%\n";
texrow.newline();
}
 
@@ -474,7 +474,7 @@
basefont = pit->getLayoutFont(bparams, outerfont);
if (switchEncoding(os, bparams, *(basefont.language()->encoding()),
   outer_encoding)) {
-   os << '\n';
+   os << "%\n";
texrow.newline();
}
 


Re: inputencoding "default" again

2007-01-14 Thread Georg Baum
Am Sonntag, 14. Januar 2007 13:18 schrieb Dov Feldstern:

> One strange thing that I'm seeing, though, is that the dvi output when 
> using "auto" and "default" is not identical: I tried this out on a file 
> which fits really tightly on the page --- when using "default" it all 
> fits on one page, but when using "auto" it doesn't. I don't know if this 
> matters or not, but it's a little strange. If you're interested in 
> following this up, I can give you the files, but I don't think that this 
> is something which should hold anything up.

There are two possible reasons I can think of:

a) the \inputencoding command causes additional whitespace
b) LyX outputs some additional whitespace before or after \inputencoding 
commands.

It would be nice if you could check whether b) is the case by manually 
removing all whitespace before and/or after \inputencoding commands 
leaving paragraph breaks intact of course). Does it then fit on one page? 
If yes, we should fix the output of LyX, and I would be interested in the 
example file. If not, we cannot do anything.


Georg



Re: inputencoding "default" again

2007-01-14 Thread Dov Feldstern

Georg Baum wrote:

Dov Feldstern wrote:



Georg Baum wrote:



I propose to change the conversion of files with "default" inputencoding
to be the same as with "auto", together with the corresponding changes in
LyX itself. The only difference between "auto" and "default" in LyX 1.5
would then be that documents with "auto" would use the inputenc package,
but documents with "default" would not.


This is exactly the right behavior as far as Hebrew is concerned.



This is in now. Dov, could you please check whether it works for you?



Yes, it appears to work. And not only does it work, but the latex file 
generated using "default" is significantly smaller than when using 
"auto", because of all the extra encoding instructions that "auto" has; 
and the latex processing time is also significantly shorter --- about 4 
times as fast for the example I tested!


One strange thing that I'm seeing, though, is that the dvi output when 
using "auto" and "default" is not identical: I tried this out on a file 
which fits really tightly on the page --- when using "default" it all 
fits on one page, but when using "auto" it doesn't. I don't know if this 
matters or not, but it's a little strange. If you're interested in 
following this up, I can give you the files, but I don't think that this 
is something which should hold anything up.


So, all in all, "default" seems to work perfectly, and at least for the 
situations in which it works --- it appears to even be preferable to "auto".


Thanks Georg!
Dov



Re: inputencoding "default" again

2007-01-13 Thread Georg Baum
Dov Feldstern wrote:

> Georg Baum wrote:
> 
>> I propose to change the conversion of files with "default" inputencoding
>> to be the same as with "auto", together with the corresponding changes in
>> LyX itself. The only difference between "auto" and "default" in LyX 1.5
>> would then be that documents with "auto" would use the inputenc package,
>> but documents with "default" would not.
> 
> This is exactly the right behavior as far as Hebrew is concerned.

This is in now. Dov, could you please check whether it works for you?


Georg



Re: inputencoding "default" again

2007-01-10 Thread Jean-Marc Lasgouttes
> "Georg" == Georg Baum <[EMAIL PROTECTED]> writes:

Georg> After the unicode merge to trunk in summer we discussed the
Georg> Of course that means that all "default" documents that are
Georg> already converted to 1.5 would not be valid anymore. 

We can afford that.

Georg> IMO this is better than to add a new file format with an
Georg> intermediate conversion step that might fail as in
Georg> http://bugzilla.lyx.org/show_bug.cgi?id=3043#c6.

Georg> Opinions? If this is OK I'll develop a patch (will be easy).

Go ahead.

JMarc


Re: inputencoding "default" again

2007-01-09 Thread José Matos
On Tuesday 09 January 2007 8:02 pm, Georg Baum wrote:
> Opinions? If this is OK I'll develop a patch (will be easy).

 Yes, it is OK. That is the price to pay for using the bleeding edge, 
sometimes bleeds happen. ;-)

>
> Georg

-- 
José Abílio


Re: inputencoding "default" again

2007-01-09 Thread Dov Feldstern

Georg Baum wrote:

I propose to change the conversion of files with "default" inputencoding to 
be the same as with "auto", together with the corresponding changes in LyX 
itself. The only difference between "auto" and "default" in LyX 1.5 would 
then be that documents with "auto" would use the inputenc package, but 
documents with "default" would not.


This is exactly the right behavior as far as Hebrew is concerned.

Thanks!