You are viewing a plain text version of this content. The canonical link for it is here.
Posted to doxia-commits@maven.apache.org by tr...@apache.org on 2006/07/04 01:33:11 UTC
svn commit: r418875 - in /maven/doxia/trunk/doxia-core/src/main:
java/org/apache/maven/doxia/module/latex/ resources/org/
resources/org/apache/ resources/org/apache/maven/
resources/org/apache/maven/doxia/ resources/org/apache/maven/doxia/module/
resou...
Author: trygvis
Date: Mon Jul 3 16:33:10 2006
New Revision: 418875
URL: http://svn.apache.org/viewvc?rev=418875&view=rev
Log:
o Cleaning up LaTeX sink. Should be usable by the book system now.
Added:
maven/doxia/trunk/doxia-core/src/main/resources/org/
maven/doxia/trunk/doxia-core/src/main/resources/org/apache/
maven/doxia/trunk/doxia-core/src/main/resources/org/apache/maven/
maven/doxia/trunk/doxia-core/src/main/resources/org/apache/maven/doxia/
maven/doxia/trunk/doxia-core/src/main/resources/org/apache/maven/doxia/module/
maven/doxia/trunk/doxia-core/src/main/resources/org/apache/maven/doxia/module/latex/
maven/doxia/trunk/doxia-core/src/main/resources/org/apache/maven/doxia/module/latex/default_preamble.tex
maven/doxia/trunk/doxia-core/src/main/resources/org/apache/maven/doxia/module/latex/default_sink_commands.tex
Modified:
maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/latex/LatexSink.java
Modified: maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/latex/LatexSink.java
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/latex/LatexSink.java?rev=418875&r1=418874&r2=418875&view=diff
==============================================================================
--- maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/latex/LatexSink.java (original)
+++ maven/doxia/trunk/doxia-core/src/main/java/org/apache/maven/doxia/module/latex/LatexSink.java Mon Jul 3 16:33:10 2006
@@ -19,19 +19,29 @@
import org.apache.maven.doxia.module.apt.AptParser;
import org.apache.maven.doxia.sink.SinkAdapter;
import org.apache.maven.doxia.util.LineBreaker;
+import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.StringUtils;
import java.io.Writer;
+import java.io.IOException;
+import java.io.InputStream;
-/**
- * @componentx
- */
public class LatexSink
extends SinkAdapter
{
private static final String EOL = System.getProperty( "line.separator" );
+ /**
+ * Flag that indicates if the document to be written is only a fragment.
+ *
+ * This implies that <code>\\begin{document}</code>, <code>\\ptitle{..}</code> will not be output.
+ */
+ private boolean fragmentDocument;
+
private LineBreaker out;
+ private String sinkCommands;
+
private String preamble;
private boolean titleFlag;
@@ -52,29 +62,58 @@
private int cellCount;
- // -----------------------------------------------------------------------
+ private boolean isTitle;
+
+ private String title;
+
+ // ----------------------------------------------------------------------
+ //
+ // ----------------------------------------------------------------------
public LatexSink( Writer out )
+ throws IOException
{
- this( out, defaultPreamble );
+ this( out, IOUtil.toString( getDefaultSinkCommands() ), IOUtil.toString( getDefaultPreamble() ) );
}
- public LatexSink( Writer out, String preamble )
+ public LatexSink( Writer out, String sinkCommands, String preamble )
{
this.out = new LineBreaker( out );
- setPreamble( preamble );
+ this.sinkCommands = sinkCommands;
+ this.preamble = preamble;
}
- public void setPreamble( String preamble )
+ public LatexSink( Writer out, String sinkCommands, String preamble, boolean fragmentDocument )
{
+ this.out = new LineBreaker( out );
+ this.sinkCommands = sinkCommands;
this.preamble = preamble;
+ this.fragmentDocument = fragmentDocument;
+ }
+
+ // ----------------------------------------------------------------------
+ // Overridables
+ // ----------------------------------------------------------------------
+
+ protected String getDocumentStart()
+ {
+ return "\\documentclass[a4paper]{article}";
+ }
+
+ protected String getDocumentBegin()
+ {
+ return "\\begin{document}";
}
- public String getPreamble()
+ protected String getDocumentEnd()
{
- return preamble;
+ return "\\end{document}" + EOL;
}
+ // ----------------------------------------------------------------------
+ // Sink Implementation
+ // ----------------------------------------------------------------------
+
public void head()
{
titleFlag = false;
@@ -87,13 +126,21 @@
cellJustif = null;
cellCount = 0;
- markup( preamble );
- markup( "\\begin{document}" + EOL + EOL );
+ if ( !fragmentDocument )
+ {
+ markup( sinkCommands );
+
+ markup( preamble );
+
+ markup( getDocumentStart() );
+
+ markup( getDocumentBegin() );
+ }
}
public void body()
{
- if ( titleFlag )
+ if ( !fragmentDocument && titleFlag )
{
titleFlag = false;
markup( "\\pmaketitle" + EOL + EOL );
@@ -102,35 +149,138 @@
public void body_()
{
- markup( "\\end{document}" + EOL + EOL );
+ if ( !fragmentDocument )
+ {
+ markup( getDocumentEnd() );
+ }
+
out.flush();
}
- public void section1()
+ // ----------------------------------------------------------------------
+ // Section Title 1
+ // ----------------------------------------------------------------------
+
+ public void sectionTitle1()
{
- markup( "\\psectioni{" );
+ isTitle = true;
}
- public void section2()
+ public void sectionTitle1_()
{
- markup( "\\psectionii{" );
+ isTitle = false;
}
- public void section3()
+ public void section1_()
{
- markup( "\\psectioniii{" );
+ if ( StringUtils.isNotEmpty( title ) )
+ {
+ markup( "\\psectioni{" + title + "}" );
+
+ title = null;
+ }
}
- public void section4()
+ // ----------------------------------------------------------------------
+ // Section Title 2
+ // ----------------------------------------------------------------------
+
+ public void sectionTitle2()
+ {
+ isTitle = true;
+ }
+
+ public void sectionTitle2_()
+ {
+ isTitle = false;
+ }
+
+ public void section2_()
+ {
+ if ( StringUtils.isNotEmpty( title ) )
+ {
+ markup( "\\psectionii{" + title + "}" );
+
+ title = null;
+ }
+ }
+
+ // ----------------------------------------------------------------------
+ // Section Title 3
+ // ----------------------------------------------------------------------
+
+ public void sectionTitle3()
+ {
+ isTitle = true;
+ }
+
+ public void sectionTitle3_()
{
- markup( "\\psectioniv{" );
+ isTitle = false;
}
- public void section5()
+ public void section3_()
{
- markup( "\\psectionv{" );
+ if ( StringUtils.isNotEmpty( title ) )
+ {
+ markup( "\\psectioniii{" + title + "}" );
+
+ title = null;
+ }
}
+ // ----------------------------------------------------------------------
+ // Section Title 4
+ // ----------------------------------------------------------------------
+
+ public void sectionTitle4()
+ {
+ isTitle = true;
+ }
+
+ public void sectionTitle4_()
+ {
+ isTitle = false;
+ }
+
+ public void section4_()
+ {
+ if ( StringUtils.isNotEmpty( title ) )
+ {
+ markup( "\\psectioniv{" + title + "}" );
+
+ title = null;
+ }
+ }
+
+ // ----------------------------------------------------------------------
+ // Section Title 5
+ // ----------------------------------------------------------------------
+
+ public void sectionTitle5()
+ {
+ isTitle = true;
+ }
+
+ public void sectionTitle5_()
+ {
+ isTitle = false;
+ }
+
+ public void section5_()
+ {
+ if ( StringUtils.isNotEmpty( title ) )
+ {
+ markup( "\\psectionv{" + title + "}" );
+
+ title = null;
+ }
+ }
+
+ // ----------------------------------------------------------------------
+ //
+ // ----------------------------------------------------------------------
+
public void list()
{
markup( "\\begin{plist}" + EOL + EOL );
@@ -297,33 +447,51 @@
public void title()
{
- titleFlag = true;
- markup( "\\ptitle{" );
+ if ( !fragmentDocument )
+ {
+ titleFlag = true;
+ markup( "\\ptitle{" );
+ }
}
public void title_()
{
- markup( "}" + EOL );
+ if ( !fragmentDocument )
+ {
+ markup( "}" + EOL );
+ }
}
public void author()
{
- markup( "\\pauthor{" );
+ if ( !fragmentDocument )
+ {
+ markup( "\\pauthor{" );
+ }
}
public void author_()
{
- markup( "}" + EOL );
+ if ( !fragmentDocument )
+ {
+ markup( "}" + EOL );
+ }
}
public void date()
{
- markup( "\\pdate{" );
+ if ( !fragmentDocument )
+ {
+ markup( "\\pdate{" );
+ }
}
public void date_()
{
- markup( "}" + EOL );
+ if ( !fragmentDocument )
+ {
+ markup( "}" + EOL );
+ }
}
public void sectionTitle_()
@@ -505,7 +673,11 @@
public void text( String text )
{
- if ( verbatimFlag )
+ if ( isTitle )
+ {
+ title = text;
+ }
+ else if ( verbatimFlag )
{
verbatimContent( text );
}
@@ -519,7 +691,10 @@
protected void markup( String text )
{
- out.write( text, /*preserveSpace*/ true );
+ if ( text != null )
+ {
+ out.write( text, /*preserveSpace*/ true );
+ }
}
protected void content( String text )
@@ -547,7 +722,7 @@
case '-':
case '<':
case '>':
- buffer.append( "\\symbol{" + ( (int) c ) + "}" );
+ buffer.append( "\\symbol{" ).append( (int) c ).append( "}" );
break;
case '~':
buffer.append( "\\textasciitilde " );
@@ -590,59 +765,9 @@
return buffer.toString();
}
- // -----------------------------------------------------------------------
-
- private static final String defaultPreamble = "\\newcommand{\\ptitle}[1]{\\title{#1}}" + EOL +
- "\\newcommand{\\pauthor}[1]{\\author{#1}}" + EOL +
- "\\newcommand{\\pdate}[1]{\\date{#1}}" + EOL +
- "\\newcommand{\\pmaketitle}{\\maketitle}" + EOL +
- "\\newcommand{\\psectioni}[1]{\\section{#1}}" + EOL +
- "\\newcommand{\\psectionii}[1]{\\subsection{#1}}" + EOL +
- "\\newcommand{\\psectioniii}[1]{\\subsubsection{#1}}" + EOL +
- "\\newcommand{\\psectioniv}[1]{\\paragraph{#1}}" + EOL +
- "\\newcommand{\\psectionv}[1]{\\subparagraph{#1}}" + EOL +
- "\\newenvironment{plist}{\\begin{itemize}}{\\end{itemize}}" + EOL +
- "\\newenvironment{pnumberedlist}{\\begin{enumerate}}{\\end{enumerate}}" + EOL +
- "\\newcommand{\\pdef}[1]{\\textbf{#1}\\hfill}" + EOL +
- "\\newenvironment{pdefinitionlist}" + EOL +
- "{\\begin{list}{}{\\settowidth{\\labelwidth}{\\textbf{999.}}" + EOL +
- " \\setlength{\\leftmargin}{\\labelwidth}" + EOL +
- " \\addtolength{\\leftmargin}{\\labelsep}" + EOL +
- " \\renewcommand{\\makelabel}{\\pdef}}}" + EOL + "{\\end{list}}" + EOL +
- "\\newenvironment{pfigure}{\\begin{center}}{\\end{center}}" + EOL +
- "\\newcommand{\\pfiguregraphics}[1]{\\includegraphics{#1.eps}}" + EOL +
- "\\newcommand{\\pfigurecaption}[1]{\\\\ \\vspace{\\pparskipamount}" + EOL +
- " \\textit{#1}}" + EOL +
- "\\newenvironment{ptable}{\\begin{center}}{\\end{center}}" + EOL +
- "\\newenvironment{ptablerows}[1]{\\begin{tabular}{#1}}{\\end{tabular}}" + EOL +
- "\\newenvironment{pcell}[1]{\\begin{tabular}[t]{#1}}{\\end{tabular}}" + EOL +
- "\\newcommand{\\ptablecaption}[1]{\\\\ \\vspace{\\pparskipamount}" + EOL +
- " \\textit{#1}}" + EOL +
- "\\newenvironment{pverbatim}{\\begin{small}}{\\end{small}}" + EOL + "\\newsavebox{\\pbox}" + EOL +
- "\\newenvironment{pverbatimbox}" + EOL + "{\\begin{lrbox}{\\pbox}\\begin{minipage}{\\linewidth}\\begin{small}}" + EOL +
- "{\\end{small}\\end{minipage}\\end{lrbox}\\fbox{\\usebox{\\pbox}}}" + EOL +
- "\\newcommand{\\phorizontalrule}{\\begin{center}" + EOL +
- " \\rule[0.5ex]{\\linewidth}{1pt}" + EOL +
- " \\end{center}}" + EOL +
- "\\newcommand{\\panchor}[1]{\\textcolor{panchorcolor}{#1}}" + EOL +
- "\\newcommand{\\plink}[1]{\\textcolor{plinkcolor}{#1}}" + EOL + "\\newcommand{\\pitalic}[1]{\\textit{#1}}" + EOL +
- "\\newcommand{\\pbold}[1]{\\textbf{#1}}" + EOL +
- "\\newcommand{\\pmonospaced}[1]{\\texttt{\\small #1}}" + EOL + EOL +
- "\\documentclass[a4paper]{article}" + EOL + "\\usepackage{a4wide}" + EOL +
- "\\usepackage{color}" + EOL +
- "\\usepackage{graphics}" + EOL +
- "\\usepackage{times}" + EOL +
- "\\usepackage[latin1]{inputenc}" + EOL +
- "\\usepackage[T1]{fontenc}" + EOL + EOL +
- "\\pagestyle{plain}" + EOL + EOL +
- "\\definecolor{plinkcolor}{rgb}{0,0,0.54}" + EOL +
- "\\definecolor{panchorcolor}{rgb}{0.54,0,0}" + EOL + EOL +
- "\\newlength{\\pparskipamount}" + EOL +
- "\\setlength{\\pparskipamount}{1ex}" + EOL +
- "\\setlength{\\parindent}{0pt}" + EOL +
- "\\setlength{\\parskip}{\\pparskipamount}" + EOL + EOL;
-
- // -----------------------------------------------------------------------
+ // ----------------------------------------------------------------------
+ //
+ // ----------------------------------------------------------------------
public void flush()
{
@@ -652,5 +777,21 @@
public void close()
{
out.close();
+ }
+
+ // ----------------------------------------------------------------------
+ //
+ // ----------------------------------------------------------------------
+
+ public static InputStream getDefaultSinkCommands()
+ throws IOException
+ {
+ return LatexSink.class.getResource( "default_sink_commands.tex" ).openStream();
+ }
+
+ public static InputStream getDefaultPreamble()
+ throws IOException
+ {
+ return LatexSink.class.getResource( "default_preamble.tex" ).openStream();
}
}
Added: maven/doxia/trunk/doxia-core/src/main/resources/org/apache/maven/doxia/module/latex/default_preamble.tex
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-core/src/main/resources/org/apache/maven/doxia/module/latex/default_preamble.tex?rev=418875&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-core/src/main/resources/org/apache/maven/doxia/module/latex/default_preamble.tex (added)
+++ maven/doxia/trunk/doxia-core/src/main/resources/org/apache/maven/doxia/module/latex/default_preamble.tex Mon Jul 3 16:33:10 2006
@@ -0,0 +1,13 @@
+\usepackage{a4wide}
+\usepackage{color}
+\usepackage{graphics}
+\usepackage{times}
+\usepackage[latin1]{inputenc}
+%%\usepackage[T1]{fontenc}
+\pagestyle{plain}
+\definecolor{plinkcolor}{rgb}{0,0,0.54}
+\definecolor{panchorcolor}{rgb}{0.54,0,0}
+\newlength{\pparskipamount}
+\setlength{\pparskipamount}{1ex}
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{\pparskipamount}
Added: maven/doxia/trunk/doxia-core/src/main/resources/org/apache/maven/doxia/module/latex/default_sink_commands.tex
URL: http://svn.apache.org/viewvc/maven/doxia/trunk/doxia-core/src/main/resources/org/apache/maven/doxia/module/latex/default_sink_commands.tex?rev=418875&view=auto
==============================================================================
--- maven/doxia/trunk/doxia-core/src/main/resources/org/apache/maven/doxia/module/latex/default_sink_commands.tex (added)
+++ maven/doxia/trunk/doxia-core/src/main/resources/org/apache/maven/doxia/module/latex/default_sink_commands.tex Mon Jul 3 16:33:10 2006
@@ -0,0 +1,36 @@
+\newcommand{\ptitle}[1]{\title{#1}}
+\newcommand{\pauthor}[1]{\author{#1}}
+\newcommand{\pdate}[1]{\date{#1}}
+\newcommand{\pmaketitle}{\maketitle}
+\newcommand{\psectioni}[1]{\section{#1}}
+\newcommand{\psectionii}[1]{\subsection{#1}}
+\newcommand{\psectioniii}[1]{\subsubsection{#1}}
+\newcommand{\psectioniv}[1]{\paragraph{#1}}
+\newcommand{\psectionv}[1]{\subparagraph{#1}}
+\newenvironment{plist}{\begin{itemize}}{\end{itemize}}
+\newenvironment{pnumberedlist}{\begin{enumerate}}{\end{enumerate}}
+\newcommand{\pdef}[1]{\textbf{#1}\hfill}
+\newenvironment{pdefinitionlist}
+{\begin{list}{}{\settowidth{\labelwidth}{\textbf{999.}}
+ \setlength{\leftmargin}{\labelwidth}
+ \addtolength{\leftmargin}{\labelsep}
+ \renewcommand{\makelabel}{\pdef}}} {\end{list}}
+\newenvironment{pfigure}{\begin{center}}{\end{center}}
+\newcommand{\pfiguregraphics}[1]{\includegraphics{#1.eps}}
+\newcommand{\pfigurecaption}[1]{\\ \vspace{\pparskipamount}
+ \textit{#1}}
+\newenvironment{ptable}{\begin{center}}{\end{center}}
+\newenvironment{ptablerows}[1]{\begin{tabular}{#1}}{\end{tabular}}
+\newenvironment{pcell}[1]{\begin{tabular}[t]{#1}}{\end{tabular}}
+\newcommand{\ptablecaption}[1]{\\ \vspace{\pparskipamount}
+ \textit{#1}}
+\newenvironment{pverbatim}{\begin{small}}{\end{small}} \newsavebox{\pbox}
+\newenvironment{pverbatimbox} {\begin{lrbox}{\pbox}\begin{minipage}{\linewidth}\begin{small}}
+{\end{small}\end{minipage}\end{lrbox}\fbox{\usebox{\pbox}}}
+\newcommand{\phorizontalrule}{\begin{center}
+ \rule[0.5ex]{\linewidth}{1pt}
+ \end{center}}
+\newcommand{\panchor}[1]{\textcolor{panchorcolor}{#1}}
+\newcommand{\plink}[1]{\textcolor{plinkcolor}{#1}} \newcommand{\pitalic}[1]{\textit{#1}}
+\newcommand{\pbold}[1]{\textbf{#1}}
+\newcommand{\pmonospaced}[1]{\texttt{\small #1}}