From 3b9a47d02ebd3cd2f863eaf8c21d58cdc35a0104 Mon Sep 17 00:00:00 2001 From: Jan Tojnar Date: Sat, 14 Feb 2026 14:28:03 +0100 Subject: [PATCH] readers/docx: Support `w:gridBefore` table row property (#11464) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Table rows in Docx files can use `w:gridBefore` property to specify a number of extra empty table cells to be inserted at the beginning of a row. Without this, table columns in tables using the element will become misaligned. https://learn.microsoft.com/en-us/dotnet/api/documentformat.openxml.wordprocessing.gridbefore?view=openxml-3.0.1 In the worst case, this can lead to cells at the end of some rows to be dropped by the parser. The test file was produced as follows based on the “3GPP TS 24.282 V19.5.0 (2025-12)” document obtained from where I encountered the issue: 1. Extracted the `document.xml`. 2. Formatted it with `xmllint --format`. 3. Found the raw XML for “Table 15.2.13-2: Payload content type”. 4. Removed `w:rsid*` and `w14:*` attributes, and `w:pStyle` elements. 5. Replaced the context of `test/docx/raw-blocks.native`. 6. Used pandoc to generate the docx. --- src/Text/Pandoc/Readers/Docx/Parse.hs | 13 +- test/Tests/Readers/Docx.hs | 4 + test/docx/table_gridbefore.docx | Bin 0 -> 13143 bytes test/docx/table_gridbefore.native | 823 ++++++++++++++++++++++++++ 4 files changed, 838 insertions(+), 2 deletions(-) create mode 100644 test/docx/table_gridbefore.docx create mode 100644 test/docx/table_gridbefore.native diff --git a/src/Text/Pandoc/Readers/Docx/Parse.hs b/src/Text/Pandoc/Readers/Docx/Parse.hs index 4612698b2..476d5e467 100644 --- a/src/Text/Pandoc/Readers/Docx/Parse.hs +++ b/src/Text/Pandoc/Readers/Docx/Parse.hs @@ -292,6 +292,9 @@ data Align = AlignDefault | AlignLeft | AlignRight | AlignCenter data Cell = Cell Align GridSpan VMerge [BodyPart] deriving Show +emptyCell :: Cell +emptyCell = Cell AlignDefault 1 Restart [] + type GridSpan = Integer data VMerge = Continue @@ -716,12 +719,18 @@ elemToTblLook _ _ = throwError WrongElem elemToRow :: NameSpaces -> Element -> D Row elemToRow ns element | isElem ns "w" "tr" element = do + let properties = findChildByName ns "w" "trPr" element + let gridBefore = properties + >>= findChildByName ns "w" "gridBefore" + >>= findAttrByName ns "w" "val" + >>= stringToInteger let cellElems = findChildrenByName ns "w" "tc" element + let beforeCells = genericReplicate (fromMaybe 0 gridBefore) emptyCell cells <- mapD (elemToCell ns) cellElems let hasTblHeader = maybe NoTblHeader (const HasTblHeader) - (findChildByName ns "w" "trPr" element + (properties >>= findChildByName ns "w" "tblHeader") - return $ Row hasTblHeader cells + return $ Row hasTblHeader (beforeCells ++ cells) elemToRow _ _ = throwError WrongElem elemToCell :: NameSpaces -> Element -> D Cell diff --git a/test/Tests/Readers/Docx.hs b/test/Tests/Readers/Docx.hs index 630b894e9..d5a37e889 100644 --- a/test/Tests/Readers/Docx.hs +++ b/test/Tests/Readers/Docx.hs @@ -317,6 +317,10 @@ tests = [ testGroup "document" "tables with lists in cells" "docx/table_with_list_cell.docx" "docx/table_with_list_cell.native" + , testCompare + "a table with gridBefore" + "docx/table_gridbefore.docx" + "docx/table_gridbefore.native" , testCompare "a table with a header which contains rowspans greater than 1" "docx/table_header_rowspan.docx" diff --git a/test/docx/table_gridbefore.docx b/test/docx/table_gridbefore.docx new file mode 100644 index 0000000000000000000000000000000000000000..9f133961a380a8c8e3e66a45b9ac8aa8968663bd GIT binary patch literal 13143 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 literal 0 HcmV?d00001 diff --git a/test/docx/table_gridbefore.native b/test/docx/table_gridbefore.native new file mode 100644 index 000000000..ac137a1a1 --- /dev/null +++ b/test/docx/table_gridbefore.native @@ -0,0 +1,823 @@ +[ Table + ( "" , [] , [] ) + (Caption Nothing []) + [ ( AlignDefault , ColWidth 7.883369330453563e-3 ) + , ( AlignDefault , ColWidth 3.0669546436285097e-2 ) + , ( AlignDefault , ColWidth 3.0669546436285097e-2 ) + , ( AlignDefault , ColWidth 3.0669546436285097e-2 ) + , ( AlignDefault , ColWidth 3.0669546436285097e-2 ) + , ( AlignDefault , ColWidth 3.0669546436285097e-2 ) + , ( AlignDefault , ColWidth 3.0669546436285097e-2 ) + , ( AlignDefault , ColWidth 3.0669546436285097e-2 ) + , ( AlignDefault , ColWidth 3.0669546436285097e-2 ) + , ( AlignDefault , ColWidth 3.0669546436285097e-2 ) + , ( AlignDefault , ColWidth 0.42861771058315334 ) + ] + (TableHead + ( "" , [] , [] ) + [ Row + ( "" , [] , [] ) + [ Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 8) + [ Plain [ Str "Bits" ] ] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + ] + ]) + [ TableBody + ( "" , [] , [] ) + (RowHeadColumns 0) + [] + [ Row + ( "" , [] , [] ) + [ Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "8" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "7" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "6" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "5" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "4" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "3" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "2" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "1" ] ] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + ] + , Row + ( "" , [] , [] ) + [ Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + ] + , Row + ( "" , [] , [] ) + [ Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "1" ] ] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "TEXT" ] ] + ] + , Row + ( "" , [] , [] ) + [ Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "1" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "BINARY" ] ] + ] + , Row + ( "" , [] , [] ) + [ Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "1" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "1" ] ] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "HYPERLINKS" ] ] + ] + , Row + ( "" , [] , [] ) + [ Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "1" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "FILEURL" ] ] + ] + , Row + ( "" , [] , [] ) + [ Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "1" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "1" ] ] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "LOCATION" ] ] + ] + , Row + ( "" , [] , [] ) + [ Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "1" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "1" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "ENHANCED" , Space , Str "STATUS" ] ] + ] + , Row + ( "" , [] , [] ) + [ Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "1" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "1" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "1" ] ] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain + [ Str "Value" + , Space + , Str "allocated" + , Space + , Str "for" + , Space + , Str "use" + , Space + , Str "in" + , Space + , Str "interworking" + , Space + , Str "(NOTE)" + ] + ] + ] + , Row + ( "" , [] , [] ) + [ Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "1" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "LOCATION" , Space , Str "ALTITUDE" ] ] + ] + , Row + ( "" , [] , [] ) + [ Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "1" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "1" ] ] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "LOCATION" , Space , Str "TIMESTAMP" ] ] + ] + , Row + ( "" , [] , [] ) + [ Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 2) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "1" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "1" ] ] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "0" ] ] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 1) + [ Plain [ Str "CODED" , Space , Str "TEXT" ] ] + ] + , Row + ( "" , [] , [] ) + [ Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + ] + , Row + ( "" , [] , [] ) + [ Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 10) + [ Plain + [ Str "All" + , Space + , Str "other" + , Space + , Str "values" + , Space + , Str "are" + , Space + , Str "reserved." + ] + ] + ] + , Row + ( "" , [] , [] ) + [ Cell + ( "" , [] , [] ) AlignDefault (RowSpan 1) (ColSpan 1) [] + , Cell + ( "" , [] , [] ) + AlignDefault + (RowSpan 1) + (ColSpan 10) + [ Plain + [ Str "NOTE:" + , Space + , Str "Usage" + , Space + , Str "of" + , Space + , Str "this" + , Space + , Str "value" + , Space + , Str "is" + , Space + , Str "described" + , Space + , Str "in" + , Space + , Str "3GPP\160TS\160\&29.582\160[48]." + ] + ] + ] + ] + ] + (TableFoot ( "" , [] , [] ) []) +]