]> git.lyx.org Git - features.git/commitdiff
support for all page sizes that are supported by the geometry package; fileformat...
authorUwe Stöhr <uwestoehr@web.de>
Tue, 18 May 2010 01:22:08 +0000 (01:22 +0000)
committerUwe Stöhr <uwestoehr@web.de>
Tue, 18 May 2010 01:22:08 +0000 (01:22 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34427 a592a061-630c-0410-9148-cb99ea01b6c8

development/FORMAT
lib/lyx2lyx/lyx_2_0.py
src/Buffer.cpp
src/BufferParams.cpp
src/frontends/qt4/GuiDocument.cpp
src/paper.h

index 03d82413cbd60838f3cb8f1185e18d9b575d949c..6687c54087b01bf9e5771b3f6c249591a0444c06 100644 (file)
@@ -7,6 +7,10 @@ The good example would be 2010-01-10 entry.
 
 -----------------------
 
+2010-05-18 Uwe Stöhr <uwestoehr@web.de>
+       * Format incremented to 388: support for page sizes A0-3, A6, B0-3, B6
+         and JIS B0-6
+
 2010-04-21 Richard heck <rgheck@comcast.net>
        * Format incremented to 387: New options for XHTML math output.
          New BufferParams: html_math_img_scale, html_latex_start,
index 57d0a1319b978c0a6040bf450ac0a11a37403127..693e16d55bbf8ae03e0eb33f2fd910ab91357b03 100644 (file)
@@ -1525,6 +1525,19 @@ def revert_math_scale(document):
     del document.header[i]
 
 
+def revert_pagesizes(document):
+  i = 0
+  " Revert page sizes to default "
+  i = find_token(document.header, '\\papersize', 0)
+  if i != -1:
+    size = document.header[i][11:]
+    document.warning("size: " + size)
+    if size == "a0paper" or "a1paper" or "a2paper" or "a6paper" \
+    or "b0paper" or "b1paper" or "b2paper" or "b6paper" \
+    or "b0j" or "b1j" or "b2j" or "b3j" or "b4j" or "b5j" or "b6j":
+      # no specified page size results in default
+      del document.header[i]
+
 
 ##
 # Conversion hub
@@ -1573,9 +1586,11 @@ convert = [[346, []],
            [385, []],
            [386, []],
            [387, []],
+           [388, []],
                                        ]
 
-revert =  [[386, [revert_math_scale]],
+revert =  [[387, [revert_pagesizes]],
+           [386, [revert_math_scale]],
            [385, [revert_lyx_version]],
            [384, [revert_shadedboxcolor]],
            [383, [revert_fontcolor]],
index 63934ae8836e3fd3db89bc90f502c9bf60b3338c..76e361f6ccd4f52cb58bbb48d94de34c3a39010b 100644 (file)
@@ -126,7 +126,7 @@ namespace {
 
 // Do not remove the comment below, so we get merge conflict in
 // independent branches. Instead add your own.
-int const LYX_FORMAT = 387; // rgh: XHTML math options
+int const LYX_FORMAT = 388; // uwestoehr: support for more page sizes
 
 typedef map<string, bool> DepClean;
 typedef map<docstring, pair<InsetLabel const *, Buffer::References> > RefCache;
index 8e0965cd363b4da623416382819a6422f0359bd4..405e0ef8504b462b0dff1983e6a7782e6ed5b061 100644 (file)
@@ -72,7 +72,10 @@ static char const * const string_quotes_language[] = {
 
 static char const * const string_papersize[] = {
        "default", "custom", "letterpaper", "legalpaper", "executivepaper",
-       "a3paper", "a4paper", "a5paper", "b3paper", "b4paper", "b5paper", ""
+       "a0paper", "a1paper", "a2paper", "a3paper",     "a4paper", "a5paper",
+       "a6paper", "b0paper", "b1paper", "b2paper","b3paper", "b4paper",
+       "b5paper", "b6paper", "b0j", "b1j", "b2j", "b3j", "b4j", "b5j",
+       "b6j", ""
 };
 
 
@@ -156,12 +159,27 @@ static PaperSizeTranslator initPaperSizeTranslator()
        translator.addPair(string_papersize[2], PAPER_USLETTER);
        translator.addPair(string_papersize[3], PAPER_USLEGAL);
        translator.addPair(string_papersize[4], PAPER_USEXECUTIVE);
-       translator.addPair(string_papersize[5], PAPER_A3);
-       translator.addPair(string_papersize[6], PAPER_A4);
-       translator.addPair(string_papersize[7], PAPER_A5);
-       translator.addPair(string_papersize[8], PAPER_B3);
-       translator.addPair(string_papersize[9], PAPER_B4);
-       translator.addPair(string_papersize[10], PAPER_B5);
+       translator.addPair(string_papersize[5], PAPER_A0);
+       translator.addPair(string_papersize[6], PAPER_A1);
+       translator.addPair(string_papersize[7], PAPER_A2);
+       translator.addPair(string_papersize[8], PAPER_A3);
+       translator.addPair(string_papersize[9], PAPER_A4);
+       translator.addPair(string_papersize[10], PAPER_A5);
+       translator.addPair(string_papersize[11], PAPER_A6);
+       translator.addPair(string_papersize[12], PAPER_B0);
+       translator.addPair(string_papersize[13], PAPER_B1);
+       translator.addPair(string_papersize[14], PAPER_B2);
+       translator.addPair(string_papersize[15], PAPER_B3);
+       translator.addPair(string_papersize[16], PAPER_B4);
+       translator.addPair(string_papersize[17], PAPER_B5);
+       translator.addPair(string_papersize[18], PAPER_B6);
+       translator.addPair(string_papersize[19], PAPER_JISB0);
+       translator.addPair(string_papersize[20], PAPER_JISB1);
+       translator.addPair(string_papersize[21], PAPER_JISB2);
+       translator.addPair(string_papersize[22], PAPER_JISB3);
+       translator.addPair(string_papersize[23], PAPER_JISB4);
+       translator.addPair(string_papersize[24], PAPER_JISB5);
+       translator.addPair(string_papersize[25], PAPER_JISB6);
        return translator;
 }
 
@@ -1157,11 +1175,14 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
                clsoptions << fontsize << "pt,";
        }
 
-       // custom, A3, B3 and B4 paper sizes need geometry
-       bool nonstandard_papersize = papersize == PAPER_B3
-               || papersize == PAPER_B4
-               || papersize == PAPER_A3
-               || papersize == PAPER_CUSTOM;
+       // all paper sizes except of A4, A5, B5 and the US sizes need the
+       // geometry package
+       bool nonstandard_papersize = papersize != PAPER_USLETTER
+               && papersize != PAPER_USLEGAL
+               && papersize != PAPER_USEXECUTIVE
+               && papersize != PAPER_A4
+               && papersize != PAPER_A5
+               && papersize != PAPER_B5;
 
        if (!use_geometry) {
                switch (papersize) {
@@ -1184,9 +1205,24 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
                        clsoptions << "legalpaper,";
                        break;
                case PAPER_DEFAULT:
+               case PAPER_A0:
+               case PAPER_A1:
+               case PAPER_A2:
                case PAPER_A3:
+               case PAPER_A6:
+               case PAPER_B0:
+               case PAPER_B1:
+               case PAPER_B2:
                case PAPER_B3:
                case PAPER_B4:
+               case PAPER_B6:
+               case PAPER_JISB0:
+               case PAPER_JISB1:
+               case PAPER_JISB2:
+               case PAPER_JISB3:
+               case PAPER_JISB4:
+               case PAPER_JISB5:
+               case PAPER_JISB6:
                case PAPER_CUSTOM:
                        break;
                }
@@ -1385,6 +1421,15 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
                case PAPER_USEXECUTIVE:
                        ods << ",executivepaper";
                        break;
+               case PAPER_A0:
+                       ods << ",a0paper";
+                       break;
+               case PAPER_A1:
+                       ods << ",a1paper";
+                       break;
+               case PAPER_A2:
+                       ods << ",a2paper";
+                       break;
                case PAPER_A3:
                        ods << ",a3paper";
                        break;
@@ -1394,6 +1439,18 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
                case PAPER_A5:
                        ods << ",a5paper";
                        break;
+               case PAPER_A6:
+                       ods << ",a6paper";
+                       break;
+               case PAPER_B0:
+                       ods << ",b0paper";
+                       break;
+               case PAPER_B1:
+                       ods << ",b1paper";
+                       break;
+               case PAPER_B2:
+                       ods << ",b2paper";
+                       break;
                case PAPER_B3:
                        ods << ",b3paper";
                        break;
@@ -1403,6 +1460,30 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
                case PAPER_B5:
                        ods << ",b5paper";
                        break;
+               case PAPER_B6:
+                       ods << ",b6paper";
+                       break;
+               case PAPER_JISB0:
+                       ods << ",b0j";
+                       break;
+               case PAPER_JISB1:
+                       ods << ",b1j";
+                       break;
+               case PAPER_JISB2:
+                       ods << ",b2j";
+                       break;
+               case PAPER_JISB3:
+                       ods << ",b3j";
+                       break;
+               case PAPER_JISB4:
+                       ods << ",b4j";
+                       break;
+               case PAPER_JISB5:
+                       ods << ",b5j";
+                       break;
+               case PAPER_JISB6:
+                       ods << ",b6j";
+                       break;
                default:
                        // default papersize ie PAPER_DEFAULT
                        switch (lyxrc.default_papersize) {
@@ -1416,6 +1497,15 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
                        case PAPER_USEXECUTIVE:
                                ods << ",executivepaper";
                                break;
+                       case PAPER_A0:
+                               ods << ",a0paper";
+                               break;
+                       case PAPER_A1:
+                               ods << ",a1paper";
+                               break;
+                       case PAPER_A2:
+                               ods << ",a2paper";
+                               break;
                        case PAPER_A3:
                                ods << ",a3paper";
                                break;
@@ -1425,11 +1515,51 @@ bool BufferParams::writeLaTeX(odocstream & os, LaTeXFeatures & features,
                        case PAPER_A5:
                                ods << ",a5paper";
                                break;
-                       case PAPER_B5:
-                               ods << ",b5paper";
+                       case PAPER_A6:
+                               ods << ",a6paper";
+                               break;
+                       case PAPER_B0:
+                               ods << ",b0paper";
+                               break;
+                       case PAPER_B1:
+                               ods << ",b1paper";
+                               break;
+                       case PAPER_B2:
+                               ods << ",b2paper";
                                break;
                        case PAPER_B3:
+                               ods << ",b3paper";
+                               break;
                        case PAPER_B4:
+                               ods << ",b4paper";
+                               break;
+                       case PAPER_B5:
+                               ods << ",b5paper";
+                               break;
+                       case PAPER_B6:
+                               ods << ",b6paper";
+                               break;
+                       case PAPER_JISB0:
+                               ods << ",b0j";
+                               break;
+                       case PAPER_JISB1:
+                               ods << ",b1j";
+                               break;
+                       case PAPER_JISB2:
+                               ods << ",b2j";
+                               break;
+                       case PAPER_JISB3:
+                               ods << ",b3j";
+                               break;
+                       case PAPER_JISB4:
+                               ods << ",b4j";
+                               break;
+                       case PAPER_JISB5:
+                               ods << ",b5j";
+                               break;
+                       case PAPER_JISB6:
+                               ods << ",b6j";
+                               break;
                        case PAPER_CUSTOM:
                                break;
                        }
@@ -2057,14 +2187,42 @@ string BufferParams::paperSizeName(PapersizePurpose purpose) const
                }
                return string();
        }
+       case PAPER_A0:
+               // dvips and dvipdfm do not know this
+               if (purpose == DVIPS || purpose == DVIPDFM)
+                       return string();
+               return "a0";
+       case PAPER_A1:
+               if (purpose == DVIPS || purpose == DVIPDFM)
+                       return string();
+               return "a1";
+       case PAPER_A2:
+               if (purpose == DVIPS || purpose == DVIPDFM)
+                       return string();
+               return "a2";
        case PAPER_A3:
                return "a3";
        case PAPER_A4:
                return "a4";
        case PAPER_A5:
                return "a5";
+       case PAPER_A6:
+               if (purpose == DVIPS || purpose == DVIPDFM)
+                       return string();
+               return "a6";
+       case PAPER_B0:
+               if (purpose == DVIPS || purpose == DVIPDFM)
+                       return string();
+               return "b0";
+       case PAPER_B1:
+               if (purpose == DVIPS || purpose == DVIPDFM)
+                       return string();
+               return "b1";
+       case PAPER_B2:
+               if (purpose == DVIPS || purpose == DVIPDFM)
+                       return string();
+               return "b2";
        case PAPER_B3:
-               // dvips and dvipdfm do not know this
                if (purpose == DVIPS || purpose == DVIPDFM)
                        return string();
                return "b3";
@@ -2074,10 +2232,41 @@ string BufferParams::paperSizeName(PapersizePurpose purpose) const
                        return string();
                return "b4";
        case PAPER_B5:
-               // dvipdfm does not know this
                if (purpose == DVIPDFM)
                        return string();
                return "b5";
+       case PAPER_B6:
+               if (purpose == DVIPS || purpose == DVIPDFM)
+                       return string();
+               return "b6";
+       case PAPER_JISB0:
+               if (purpose == DVIPS || purpose == DVIPDFM)
+                       return string();
+               return "jisb0";
+       case PAPER_JISB1:
+               if (purpose == DVIPS || purpose == DVIPDFM)
+                       return string();
+               return "jisb1";
+       case PAPER_JISB2:
+               if (purpose == DVIPS || purpose == DVIPDFM)
+                       return string();
+               return "jisb2";
+       case PAPER_JISB3:
+               if (purpose == DVIPS || purpose == DVIPDFM)
+                       return string();
+               return "jisb3";
+       case PAPER_JISB4:
+               if (purpose == DVIPS || purpose == DVIPDFM)
+                       return string();
+               return "jisb4";
+       case PAPER_JISB5:
+               if (purpose == DVIPS || purpose == DVIPDFM)
+                       return string();
+               return "jisb5";
+       case PAPER_JISB6:
+               if (purpose == DVIPS || purpose == DVIPDFM)
+                       return string();
+               return "jisb6";
        case PAPER_USEXECUTIVE:
                // dvipdfm does not know this
                if (purpose == DVIPDFM)
index e06431fbe3e6ce66fa853207fe9ff4a35b1ede34..8426b492823a1fa3545f6935ac16e389f917851d 100644 (file)
@@ -757,12 +757,27 @@ GuiDocument::GuiDocument(GuiView & lv)
        cb->addItem(qt_("US letter"));
        cb->addItem(qt_("US legal"));
        cb->addItem(qt_("US executive"));
+       cb->addItem(qt_("A0"));
+       cb->addItem(qt_("A1"));
+       cb->addItem(qt_("A2"));
        cb->addItem(qt_("A3"));
        cb->addItem(qt_("A4"));
        cb->addItem(qt_("A5"));
+       cb->addItem(qt_("A6"));
+       cb->addItem(qt_("B0"));
+       cb->addItem(qt_("B1"));
+       cb->addItem(qt_("B2"));
        cb->addItem(qt_("B3"));
        cb->addItem(qt_("B4"));
        cb->addItem(qt_("B5"));
+       cb->addItem(qt_("B6"));
+       cb->addItem(qt_("JIS B0"));
+       cb->addItem(qt_("JIS B1"));
+       cb->addItem(qt_("JIS B2"));
+       cb->addItem(qt_("JIS B3"));
+       cb->addItem(qt_("JIS B4"));
+       cb->addItem(qt_("JIS B5"));
+       cb->addItem(qt_("JIS B6"));
        // remove the %-items from the unit choice
        pageLayoutModule->paperwidthUnitCO->noPercents();
        pageLayoutModule->paperheightUnitCO->noPercents();
@@ -2338,9 +2353,11 @@ void GuiDocument::applyView()
        bp_.papersize = PAPER_SIZE(
                pageLayoutModule->papersizeCO->currentIndex());
 
-       // custom, A3, B3 and B4 paper sizes need geometry
+       // only custom, A4, B4, B5 and the US sizes don't need the LaTeX-
+       // package gegeometry
        int psize = pageLayoutModule->papersizeCO->currentIndex();
-       bool geom_papersize = (psize == 1 || psize == 5 || psize == 8 || psize == 9);
+       bool geom_papersize = (psize != 1 && psize != 2 && psize != 3
+               && psize != 4 && psize != 9 && psize != 10 && psize != 17);
 
        bp_.paperwidth = widgetsToLength(pageLayoutModule->paperwidthLE,
                pageLayoutModule->paperwidthUnitCO);
index d892f920949c1d96ec70cd85537da3b209372d06..a6cba7e810b55316d0ebc2a8b71a87471ff445db 100644 (file)
@@ -5,11 +5,16 @@
  * Licence details can be found in the file COPYING.
  *
  * \author Jean-Marc Lasgouttes
+ * \author Uwe Stöhr
  *
  * Full author contact details are available in file CREDITS.
  *
  * A trivial header file to hold paper-related enums. It should later
  * expand to contain many paper-related horrors access.
+ *
+ * The supported paper sizes are those that are supported by the
+ * LaTeX-package geometry. However, the Japanese JIS B-series paper
+ * sizes are not yet supported by LyX.
  */
 
 #ifndef PAPER_H
@@ -30,17 +35,47 @@ enum PAPER_SIZE {
        ///
        PAPER_USEXECUTIVE,
        ///
+       PAPER_A0,
+       ///
+       PAPER_A1,
+       ///
+       PAPER_A2,
+       ///
        PAPER_A3,
        ///
        PAPER_A4,
        ///
        PAPER_A5,
        ///
+       PAPER_A6,
+       ///
+       PAPER_B0,
+       ///
+       PAPER_B1,
+       ///
+       PAPER_B2,
+       ///
        PAPER_B3,
        ///
        PAPER_B4,
        ///
-       PAPER_B5
+       PAPER_B5,
+       ///
+       PAPER_B6,
+       ///
+       PAPER_JISB0,
+       ///
+       PAPER_JISB1,
+       ///
+       PAPER_JISB2,
+       ///
+       PAPER_JISB3,
+       ///
+       PAPER_JISB4,
+       ///
+       PAPER_JISB5,
+       ///
+       PAPER_JISB6
 };
 
 ///