From 65a4715f1951ebfa2ccd7b60d01ab09bcda5a4aa Mon Sep 17 00:00:00 2001 From: milde Date: Tue, 26 Jul 2016 12:24:58 +0000 Subject: LaTeX writer tests for multirow tables. Also some more corner case test for LaTeX. (Functional test, so that the visual appearence in PDF can be easily checked.) git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@7950 929543f6-e4f2-0310-98a6-ba3bd3dd1d04 --- .../functional/input/data/latex-problematic.txt | 183 ++++++++++++++ docutils/test/functional/input/data/latex.txt | 268 --------------------- .../test/functional/input/data/tables_latex.txt | 4 +- .../test/functional/input/latex_cornercases.txt | 138 +++++++++++ 4 files changed, 322 insertions(+), 271 deletions(-) create mode 100644 docutils/test/functional/input/data/latex-problematic.txt delete mode 100644 docutils/test/functional/input/data/latex.txt create mode 100644 docutils/test/functional/input/latex_cornercases.txt (limited to 'docutils/test/functional/input') diff --git a/docutils/test/functional/input/data/latex-problematic.txt b/docutils/test/functional/input/data/latex-problematic.txt new file mode 100644 index 000000000..acaefc2b7 --- /dev/null +++ b/docutils/test/functional/input/data/latex-problematic.txt @@ -0,0 +1,183 @@ +Problematic Cases for the LaTeX Writer +====================================== + +These tests contain unusual combinations of syntax elements which may cause +trouble for the LaTeX writer but do not need to be tested with other writers +(e.g. the HTML writer). + +The file `latex-problematic.txt` contains the cases with non unsatisfying +results. It is only used to control the visual appearance of the output, not +by any automated test + +Sidebars +-------- + +This paragraph precedes the sidebar. This is some text. This is some +text. This is some text. This is some text. This is some text. +This is some text. This is some text. This is some text. + +.. sidebar:: Sidebar Title + + These are the sidebar contents. These are the sidebar contents. + + These are the sidebar contents. These are the sidebar contents. + + These are the sidebar contents. These are the sidebar contents. + These are the sidebar contents. These are the sidebar contents. + +This paragraph follows the sidebar. This is some text. This is some +text. This is some text. + +This is some text. This is some text. This is some text. This is +some text. This is some text. This is some text. This is some text. + + +Next Section +------------ + +This section comes after the sidebar, and this text should float +around the sidebar as well. This is some text. This is some text. +This is some text. This is some text. This is some text. This is +some text. This is some text. This is some text. This is some text. +This is some text. This is some text. This is some text. This is +some text. This is some text. + +This is some text. This is some text. This is some text. This is +some text. This is some text. This is some text. This is some text. +This is some text. This is some text. This is some text. + +Nested Elements +--------------- + +:Field list: | Line + | Block +:Field 2: * Bullet + * list +:Another (longer) field: * Bullet + * list +:Yet another long field: + * .. comment + + Bullet + + .. comment + + * .. comment + + list + + .. comment + +:Field: * This + + is + + a + + * bullet + + list + +:Field: * | This is + | a bullet + * | list with + | line blocks +:Last field: Last field. + +Too deeply nested lists fail. TODO: generate an error or provide a workaround. + +.. * * * * * * * * Deeply nested list. + +.. 1. 2. 3. 4. 5. 6. 7. 8. Deeply nested list. + ++-----------------+ +| | Line block | +| | +| * Bullet list | +| | +| :: | +| | +| Literal | +| block | ++-----------------+ +| :Field 1: | +| Text. | +| :Field 2: | +| More text. | ++-----------------+ +| +-------+-----+ | +| | A |* foo| | +| | nested| | | +| | table.|* bar| | +| +-------+-----+ | ++-----------------+ +| This is a | +| paragraph. | +| | +| +-------+-----+ | +| | A |* foo| | +| | nested| | | +| | table.|* bar| | +| +-------+-----+ | +| | +| Another longer | +| paragraph. | ++-----------------+ +| * A list. | +| * A list. | +| | +| +-------+-----+ | +| | A |* foo| | +| | nested| | | +| | table.|* bar| | +| +-------+-----+ | +| | +| * Another list. | +| * Another list. | ++-----------------+ +| Foo | +| | +| Bar | ++-----------------+ +| * Foo | +| | +| * Bar | ++-----------------+ +| * This is a | +| paragraph. | +| | +| This is a | +| paragraph. | +| | +| * This is a | +| paragraph. | +| | +| This is a | +| paragraph. | ++-----------------+ + +Vertical alignment of inline images +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. |top| image:: ../../../../docs/user/rst/images/biohazard.png + :align: top + :width: 3em + +.. |middle| image:: ../../../../docs/user/rst/images/biohazard.png + :align: middle + :width: 2em + +.. |bottom| image:: ../../../../docs/user/rst/images/biohazard.png + :align: bottom + :width: 2.5em + +A paragraph with top |top|, middle |middle|, and bottom |bottom| +aligned images. + +A paragraph with top |top| aligned image. + +A paragraph with middle |middle| aligned image. + +A paragraph with bottom |bottom| aligned image. + + diff --git a/docutils/test/functional/input/data/latex.txt b/docutils/test/functional/input/data/latex.txt deleted file mode 100644 index 0926f842a..000000000 --- a/docutils/test/functional/input/data/latex.txt +++ /dev/null @@ -1,268 +0,0 @@ -Some Tests for the LaTeX Writer -=============================== - -These tests have been written to exercise some unusual combinations of -syntax elements which may cause trouble for the LaTeX writer but do -not need to be tested with other writers (e.g. the HTML writer). - -This file is not yet used by any automated test. It is currently only -used to control the visual appearance of the output. - - -Block Quotes ------------- - - This block quote comes directly after the section heading and is - followed by a paragraph. - - This is the second paragraph of the block quote and it contains - some more text filling up some space which would otherwise be - empty. - - -- Attribution - -This is a paragraph. - - This block quote does not have an attribution. - -This is another paragraph. - - Another block quote at the end of the section. - - -More Block Quotes ------------------ - - Block quote followed by a transition. - ----------- - - Another block quote. - - -Sidebars --------- - -This paragraph precedes the sidebar. This is some text. This is some -text. This is some text. This is some text. This is some text. -This is some text. This is some text. This is some text. - -.. sidebar:: Sidebar Title - - These are the sidebar contents. These are the sidebar contents. - - These are the sidebar contents. These are the sidebar contents. - - These are the sidebar contents. These are the sidebar contents. - These are the sidebar contents. These are the sidebar contents. - -This paragraph follows the sidebar. This is some text. This is some -text. This is some text. - -This is some text. This is some text. This is some text. This is -some text. This is some text. This is some text. This is some text. - - -Next Section ------------- - -This section comes after the sidebar, and this text should float -around the sidebar as well. This is some text. This is some text. -This is some text. This is some text. This is some text. This is -some text. This is some text. This is some text. This is some text. -This is some text. This is some text. This is some text. This is -some text. This is some text. - -This is some text. This is some text. This is some text. This is -some text. This is some text. This is some text. This is some text. -This is some text. This is some text. This is some text. - - -Nested Elements ---------------- - -:Field list: | Line - | Block -:Field 2: * Bullet - * list -:Another (longer) field: * Bullet - * list -:Yet another long field: - * .. comment - - Bullet - - .. comment - - * .. comment - - list - - .. comment - -:Field: * This - - is - - a - - * bullet - - list - -:Field: * | This is - | a bullet - * | list with - | line blocks -:Last field: Last field. - -Too deeply nested lists fail. TODO: generate an error or provide a workaround. - -.. * * * * * * * * Deeply nested list. - -.. 1. 2. 3. 4. 5. 6. 7. 8. Deeply nested list. - -+-----------------+ -| | Line block | -| | -| * Bullet list | -| | -| :: | -| | -| Literal | -| block | -+-----------------+ -| :Field 1: | -| Text. | -| :Field 2: | -| More text. | -+-----------------+ -| +-------+-----+ | -| | A |* foo| | -| | nested| | | -| | table.|* bar| | -| +-------+-----+ | -+-----------------+ -| This is a | -| paragraph. | -| | -| +-------+-----+ | -| | A |* foo| | -| | nested| | | -| | table.|* bar| | -| +-------+-----+ | -| | -| Another longer | -| paragraph. | -+-----------------+ -| * A list. | -| * A list. | -| | -| +-------+-----+ | -| | A |* foo| | -| | nested| | | -| | table.|* bar| | -| +-------+-----+ | -| | -| * Another list. | -| * Another list. | -+-----------------+ -| Foo | -| | -| Bar | -+-----------------+ -| * Foo | -| | -| * Bar | -+-----------------+ -| * This is a | -| paragraph. | -| | -| This is a | -| paragraph. | -| | -| * This is a | -| paragraph. | -| | -| This is a | -| paragraph. | -+-----------------+ - - -Images ------- - -Image with 20% width: - -.. image:: ../../../../docs/user/rst/images/title.png - :width: 20% - -Image with 100% width: - -.. image:: ../../../../docs/user/rst/images/title.png - :width: 100% - - -Vertical alignment of inline images -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -.. |top| image:: ../../../../docs/user/rst/images/biohazard.png - :align: top - -.. |middle| image:: ../../../../docs/user/rst/images/biohazard.png - :align: middle - -.. |bottom| image:: ../../../../docs/user/rst/images/biohazard.png - :align: bottom - -A paragraph containing top |top|, middle |middle|, and bottom |bottom| -aligned images. - - -Rowspanning tables ------------------- - -Several rowspanning cells in a table. - -.. Problem: - - In the LaTeX `multicol` package, if there are multirow cells, the - "overwritten" cells need to be defined as empty cells. - - Docutils (similarily to HTML) uses is the "Exchange Table Model" (also - known as CALS tables, see docs/ref/soextblx.dtd) which defines only the - remaining cells in a row "affected" by multirow cells. - - Therefore, visit_entry() is only called for the remaining cells and the - LaTeX writer needs bookkeeping to write out the required number of extra - '&'s. - -.. class:: standard - -+-----------+------------+------------------+-----------+ -| cell 11 | cell 12 | cell 13 | cell 41 | -+-----------+------------+------------------+-----------+ -| cell 12 | Cell a | | cell 42 | -+-----------+ | +-----------+ -| cell 13 | | cell b | cell 43 | -+-----------+------------+------------------+-----------+ - -.. class:: standard - -+------------+------------------+-----------+ -| cell 12 | cell 13 | cell 41 | -+------------+------------------+-----------+ -| Cell a | | cell 42 | -+ | +-----------+ -| | cell b | cell 43 | -+------------+------------------+-----------+ - -.. class:: standard - -+-----------+------------+-----------+ -| cell 11 | cell 12 | cell 41 | -+-----------+------------+-----------+ -| cell 12 | Cell a | cell 42 | -+-----------+ +-----------+ -| cell 13 | | cell 43 | -+-----------+------------+-----------+ diff --git a/docutils/test/functional/input/data/tables_latex.txt b/docutils/test/functional/input/data/tables_latex.txt index f0e0179b5..1e8550ca1 100644 --- a/docutils/test/functional/input/data/tables_latex.txt +++ b/docutils/test/functional/input/data/tables_latex.txt @@ -27,7 +27,5 @@ A table with multirow header | +-------------------+ | | Description | +============+===================+ - | multirow header breaks latex | + | multicollumn cell | +--------------------------------+ - - diff --git a/docutils/test/functional/input/latex_cornercases.txt b/docutils/test/functional/input/latex_cornercases.txt new file mode 100644 index 000000000..ebb3d4d8d --- /dev/null +++ b/docutils/test/functional/input/latex_cornercases.txt @@ -0,0 +1,138 @@ +Some Tests for the LaTeX Writer +=============================== + +These tests contain unusual combinations of syntax elements which may cause +trouble for the LaTeX writer but do not need to be tested with other writers. + +Block Quotes +------------ + + This block quote comes directly after the section heading and is + followed by a paragraph. + + This is the second paragraph of the block quote and it contains + some more text filling up some space which would otherwise be + empty. + + -- Attribution + +This is a paragraph. + + This block quote does not have an attribution. + +This is another paragraph. + + Another block quote at the end of the section. + + +More Block Quotes +----------------- + + Block quote followed by a transition. + +---------- + + Another block quote. + + +Images +------ + +Image with 20% width: + +.. image:: ../../../docs/user/rst/images/title.png + :width: 20% + +Image with 100% width: + +.. image:: ../../../docs/user/rst/images/title.png + :width: 100% + + +Rowspanning tables +------------------ + +Several rowspanning cells in a table. + +Problem: + +In LaTeX, "overwritten" cells need to be defined as empty cells. + +Docutils (similarily to HTML) uses is the "Exchange Table Model" (also known +as CALS tables, see docs/ref/soextblx.dtd) which defines only the remaining +cells in a row "affected" by multirow cells. + +Therefore, visit_entry() is only called for the remaining cells and the +LaTeX writer needs bookkeeping to write out the required number of extra +'&'s. + ++-----+----------+----------+------+ +| 11 | 12 | 13 | 14 | ++-----+----------+----------+------+ +| 21 | 2/3 2 | | 24 | ++-----+ | +------+ +| 31 | | 2…4 3 | 34 | ++-----+----------+ +------+ +| 41 | 42 | | 14 | ++-----+----------+----------+------+ + ++-------+-------+----+ +| 11 | 12 | 13 | ++-------+-------+----+ +| 2/3 1 | | 23 | +| | +----+ +| | 2/3 2 | 33 | ++-------+-------+----+ + ++-------+----+ +| 11 | 12 | ++-------+----+ +| 2/3 1 | 22 | +| +----+ +| | 32 | ++-------+----+ + ++----+--------+----+ +| 11 | 12 | 13 | ++----+--------+----+ +| 21 | 2/3 2 | 23 | ++----+ +----+ +| 31 | | 33 | ++----+--------+----+ + ++----+--------+ +| 11 | 12 | ++----+--------+ +| 21 | 2/3 1 | ++----+ | +| 31 | | ++----+--------+ + + ++----+--------+ +| 11 | 1/2 1 | ++----+ | +| 21 | | ++----+--------+ +| 31 | 32 | ++----+--------+ + ++----+------------+--------+ +| 11 | 1/2 2 | | ++----+ | 1/2 3 | +| 21 | | | ++----+------------+--------+ + ++-------+----+--------+ +| | 12 | 1/2 3 | +| 1/2 3 +----+ | +| | 22 | | ++-------+----+--------+ + ++-------+----+ +| | 12 | +| 1/2 3 +----+ +| | 22 | ++-------+----+ +| 31 | 32 | ++-------+----+ -- cgit v1.2.1