001 /*
002 * LaTeXConstants.java
003 * Copyright (c) 1998-2008, The University of Sheffield.
004 *
005 * This code is from the GATE project (http://gate.ac.uk/) and is free
006 * software licenced under the GNU General Public License version 3. It is
007 * distributed without any warranty. For more details see COPYING.txt in the
008 * top level directory (or at http://gatewiki.sf.net/COPYING.txt).
009 *
010 * Hamish Cunningham, 24th August 2006
011 */
012
013 package gate.yam.translate;
014
015 /**
016 * Constants used when translating LaTeX. One entry for each type of parse tree
017 * node. Each entry contains the node type name, the start constant and the
018 * end constant.
019 * <pre>
020 * constantsTable[CONSTANTNAME] is the node type name
021 * constantsTable[CONSTANTSTART] is the start string
022 * constantsTable[CONSTANTEND] is the end string
023 * </pre>
024 * A separate map is defined for predicates, and there are misc patterns for
025 * e.g. headings construction.
026 * @author Hamish Cunningham
027 */
028 public interface LaTeXConstants
029 {
030 /** Array mapping node type name to start/end strings. */
031 final String[][] latexConstantsTable = {
032
033 // ordinary nodes
034 { "YamDocument", "", "\\end{document}" },
035 { "Sep", "", "" },
036 { "Title", "", "" },
037 { "Text", "", "" },
038 { "Verbatim", "\\begin{verbatim}", "\\end{verbatim}" },
039 { "Word", "", "" },
040 { "Escape", "", "" },
041 { "Plain", "", "" },
042 { "Control", "", "" },
043 { "TargetControl", "", "" },
044 { "Hr", "\\hrulefill", "" },
045 { "Url", "\\url{_X_}", "" },
046 { "Anchor", "\\label{_X_}", "" },
047 { "Br", "\\\\", "" },
048 { "Nbsp", "~", "" },
049 { "Unit", "", "" },
050 { "SectionHead", "\n", "" },
051 { "SectionText", "", "" },
052 { "Paragraph", "", "" },
053 { "List", "", "" },
054 { "ListItem", "\\item ", "" },
055 { "OList", "\\begin{enumerate}", "\\end{enumerate}"},
056 { "UList", "\\begin{itemize}", "\\end{itemize}" },
057 { "Table", "\\begin{table}", "\\end{table}" },
058 { "Row", "", "\\\\" },
059 { "Column", "", " & " },
060 { "TableSep", "", "" },
061 { "Whsp", "", "" },
062 { "Contents", "", "" },
063 { "Predicate", "", "" },
064 { "TextOrTable", "", "" },
065 { "Skip", "", "" },
066
067 // controls
068 { "*", "{\\bf ", "}" },
069 { "^", "{\\tt ", "}" },
070 { "_", "{\\it ", "}" },
071 { "__", "{\\ul", "}" },
072 { "<", "<", "" },
073 { "&", "\\&", "" },
074 { "%\"", "\begin{quotation}", "\\end{quotation}" },
075
076 // predicates
077 { "image", "\\includegraphics{", "}" },
078 { "footnote", "\\footnote{", "}" },
079 { "cite", "\\cite{", "}" },
080 { "include", "", "" },
081
082 // misc useful constants
083 { "olistPara", "\\n\\begin{enumerate}\\n", "\\end{enumerate}\\n" },
084 { "ulistPara", "\\n\\begin{itemize}\\n", "\\end{itemize}\\n" },
085 { "anchorPattern", "\\label{_X_}", "" },
086 { "linkPattern", "\\href{_X_}{_Y_}", "" },
087 { "headingPattern", "\\_X_{_Y_}", "" },
088 { "nbSpace", "~", "" },
089 { "headNumber", "", "" },
090 { "footnoteText", "", "" },
091 { "footnoteSection","", "" },
092 { "comment", "\\delete{", "}", },
093
094 // headings
095 { "1", "section", "", },
096 { "2", "subsection", "", },
097 { "3", "subsubsection", "", },
098 { "4", "paragraph", "", },
099 { "5", "subparagraph", "", },
100 { "6", "subparagraph", "", },
101 { "7", "subparagraph", "", },
102 { "8", "subparagraph", "", },
103 { "9", "subparagraph", "", },
104 };
105
106 /** Attributes allowed on images. */
107 final String[] imageAttrs =
108 { " src=\"_X_\"", " alt=\"_X_\"", " width=\"_X_\"", " height=\"_X_\"",
109 " align=\"_X_\"", " border=\"_X_\"", };
110
111 /** Attributes allowed on footnotes. */
112 final String[] footnoteAttrs = { "_X_" };
113
114 /** HTML citation style. */
115 final String citationAttr = "\\cite{_X_}";
116
117 /** Attributes allowed on citations. Ugly, I admit. */
118 final String[] citationAttrs = { citationAttr,
119 ", " + citationAttr, ", " + citationAttr, ", " + citationAttr,
120 ", " + citationAttr, ", " + citationAttr, ", " + citationAttr,
121 ", " + citationAttr, ", " + citationAttr, ", " + citationAttr,
122 ", " + citationAttr, ", " + citationAttr, ", " + citationAttr,
123 ", " + citationAttr, ", " + citationAttr, ", " + citationAttr,
124 ", " + citationAttr, ", " + citationAttr, ", " + citationAttr,
125 ", " + citationAttr, ", " + citationAttr, ", " + citationAttr,
126 ", " + citationAttr, ", " + citationAttr, ", " + citationAttr,
127 ", " + citationAttr, ", " + citationAttr, ", " + citationAttr,
128 ", " + citationAttr, ", " + citationAttr, ", " + citationAttr,
129 ", " + citationAttr, ", " + citationAttr, ", " + citationAttr,
130 ", " + citationAttr, ", " + citationAttr, ", " + citationAttr,
131 ", " + citationAttr, ", " + citationAttr, ", " + citationAttr,
132 ", " + citationAttr, ", " + citationAttr, ", " + citationAttr,
133 };
134
135 /** Attributes allowed on includes. */
136 final String[] includeAttrs = { "_X_" };
137
138 /** Array mapping predicate type name to attributes. */
139 final Object[][] latexPredicatesTable = {
140 { "image", imageAttrs },
141 { "footnote", footnoteAttrs },
142 { "cite", citationAttrs },
143 { "include", includeAttrs },
144 };
145
146 } // LaTeXConstants
|