commit 64ad077c9c4612d5ae7e66e6e398662bed11b25a
Author: Juergen Spitzmueller <[email protected]>
Date: Mon Aug 27 12:12:56 2018 +0200
tex2lyx: support V table column type
---
src/tex2lyx/TODO.txt | 3 +--
src/tex2lyx/table.cpp | 23 +++++++++++++++++++++--
2 files changed, 22 insertions(+), 4 deletions(-)
diff --git a/src/tex2lyx/TODO.txt b/src/tex2lyx/TODO.txt
index 2996e71..365e791 100644
--- a/src/tex2lyx/TODO.txt
+++ b/src/tex2lyx/TODO.txt
@@ -34,8 +34,7 @@ Format LaTeX feature LyX feature
443 unicode-math.sty InsetMath*
453 automatic stmaryrd loading \use_package stmaryrd
457 automatic stackrel loading \use_package stackrel
-555 V column type (varwidth package) Automatically detected with
newlines, paragraph breaks and environment content in cells of rows
-563 InsetArgument listpreamble:<nr> All content between \begin{env}
and first \item of a list
+563 InsetArgument listpreamble:1 All content between \begin{env}
and first \item of a list
diff --git a/src/tex2lyx/table.cpp b/src/tex2lyx/table.cpp
index 217014c..01c7a54 100644
--- a/src/tex2lyx/table.cpp
+++ b/src/tex2lyx/table.cpp
@@ -39,7 +39,7 @@ namespace {
class ColInfo {
public:
ColInfo() : align('n'), valign('n'), rightlines(0), leftlines(0),
- varwidth(false), decimal_point('\0') {}
+ varwidth(false), decimal_point('\0'), vcolumn(false) {}
/// column alignment
char align;
/// vertical alignment
@@ -56,6 +56,8 @@ public:
bool varwidth;
/// decimal separator
char decimal_point;
+ /// V column type
+ bool vcolumn;
};
@@ -298,7 +300,9 @@ void ci2special(ColInfo & ci)
ci.special += ">{\\centering" + arraybackslash + "}";
break;
}
- if (ci.varwidth)
+ if (ci.vcolumn)
+ ci.special += 'V';
+ else if (ci.varwidth)
ci.special += 'X';
else if (ci.valign == 'n')
ci.special += 'p';
@@ -384,6 +388,21 @@ void handle_colalign(Parser & p, vector<ColInfo> & colinfo,
colinfo.push_back(next);
next = ColInfo();
break;
+ case 'V': {
+ // V column type (varwidth package)
+ string const s =
trimSpaceAndEol(p.verbatim_item());
+ // V{\linewidth} is treated as a normal column
+ // (which allows for line breaks). The V type is
+ // automatically set by LyX in this case
+ if (s != "\\linewidth" ||
!next.special.empty()) {
+ next.vcolumn = true;
+ next.width = s;
+ ci2special(next);
+ }
+ colinfo.push_back(next);
+ next = ColInfo();
+ break;
+ }
case 'p':
case 'b':
case 'm':