⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 latexoperatordocgenerator.java

📁 一个很好的LIBSVM的JAVA源码。对于要研究和改进SVM算法的学者。可以参考。来自数据挖掘工具YALE工具包。
💻 JAVA
字号:
/*
 *  YALE - Yet Another Learning Environment
 *  Copyright (C) 2001-2004
 *      Simon Fischer, Ralf Klinkenberg, Ingo Mierswa, 
 *          Katharina Morik, Oliver Ritthoff
 *      Artificial Intelligence Unit
 *      Computer Science Department
 *      University of Dortmund
 *      44221 Dortmund,  Germany
 *  email: yale-team@lists.sourceforge.net
 *  web:   http://yale.cs.uni-dortmund.de/
 *
 *  This program is free software; you can redistribute it and/or
 *  modify it under the terms of the GNU General Public License as 
 *  published by the Free Software Foundation; either version 2 of the
 *  License, or (at your option) any later version. 
 *
 *  This program is distributed in the hope that it will be useful, but
 *  WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 *  General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 *  USA.
 */
package edu.udo.cs.yale.doc;

import edu.udo.cs.yale.tools.LogService;

import java.util.Stack;
import java.io.PrintWriter;
import java.io.StringReader;
import java.io.IOException;
import java.util.regex.*;
import javax.xml.parsers.*;
import org.xml.sax.helpers.*;
import org.xml.sax.*;

/** Formats operator documentation in LaTeX style.
 *  
 *  @yale.todo Lookup class when link is found and decide which tag to use (op, ioobj, ...)
 *  @version $Id: LatexOperatorDocGenerator.java,v 2.17 2004/08/27 11:57:31 ingomierswa Exp $ 
 */
public class LatexOperatorDocGenerator extends AbstractOperatorDocGenerator {

    public static final String[][] TAGS = { 
	{ "", "" },
	{ "\\operator{", "}" },
	{ "\n\\begin{parameters}", "\\end{parameters}" },
	{ "", "" },
	{ "\\reqpar[", "]" },
	{ "\\optpar[", "]" },
	{ "", "" },
	{ "\\opdescr ", "" },
	{ "\\begin{opin} ", "\\end{opin}" },
	{ "\\begin{opout} ", "\\end{opout}" },
	{ "\\item[", "]" },
	{ "\n\\begin{values}", "\\end{values}" },
	{ "", "" },
	{ "\\val[", "]" },
	{ "", "" },
	{ "\\index{", "}" },
	{ "\\par References: ", "" },
	{ "\\cite{", "}" }
    };

    public String getOpenTag(int tagNo) {
	return TAGS[tagNo][0];
    }

    public String getCloseTag(int tagNo) {
	return TAGS[tagNo][1];
    }

    public String marginIcon(String iconName) {
	String epsfig = "\\epsfig{file=graphics/"+iconName+".eps}";
	return "\\marginpar[\\flushright"+epsfig+"]{"+epsfig+"}";
    }

    public String escape(String toEscape) {
	String escaped = toEscape.replaceAll("_", "\\\\_");
	escaped = escaped.replaceAll("\\$", "\\\\\\$");
	escaped = escaped.replaceAll("\u221E", "\\$\\\\infty\\$");
	escaped = escaped.replaceAll("ä", "\\\\\"a");
	escaped = escaped.replaceAll("ö", "\\\\\"o");
	escaped = escaped.replaceAll("ü", "\\\\\"u");
	escaped = escaped.replaceAll("Ä", "\\\\\"A");
	escaped = escaped.replaceAll("Ö", "\\\\\"O");
	escaped = escaped.replaceAll("Ü", "\\\\\"U");
	escaped = escaped.replaceAll("ß", "\\\\\"s");
	escaped = escaped.replaceAll(" ", "\\\\ ");
	escaped = escaped.replaceAll("(\\w)"", "$1''");
	escaped = escaped.replaceAll(""", "``");
	escaped = escaped.replaceAll("#", "\\\\#");
	escaped = escaped.replaceAll("&", "\\\\&");
	escaped = escaped.replaceAll("\\[", "\\{\\[\\}");
	escaped = escaped.replaceAll("\\]", "\\{\\]\\}");
	escaped = escaped.replaceAll("Yale", "\\\\Yale");
	return escaped;
    }

    public void beginGroup(String groupName, PrintWriter out) {
	out.println("\\pagebreak[4]");
	//out.println("\\section{" + escape(groupName) + "}");
	//out.println("\\label{sec:reference_"+groupName.toLowerCase()+"}");
	groupName = groupName.replace(' ', '_');
	out.println("\\input{OpGroup"+groupName+".tex}");
    }

    public void endGroup(String groupName, PrintWriter out) {
	out.println("\\vfill");
    }

    public String transformHTMLJavadocComment(String comment, final Class clazz) {
	try {
	    SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
	    comment = "<body>"+comment+"</body>";
	    final StringBuffer transformed = new StringBuffer();
	    final Stack closingTagStack = new Stack();
	    parser.parse(new InputSource(new StringReader(comment)), new DefaultHandler() {

		    public void characters(char[] ch, int start, int length) throws SAXException {
			transformed.append(ch, start, length);
		    }

		    public InputSource resolveEntity(String publicId, String systemId) throws SAXException {
			LogService.logMessage("Entity: "+publicId, LogService.TASK);
			String latex;
			if (systemId.equals("&quot;")) {
			    latex = "``"; 
			} else if (systemId.equals("&auml;")) {
			    latex = "\\\"a";
			} else if (systemId.equals("&ouml;")) {
			    latex = "\\\"o";
			} else if (systemId.equals("&uuml;")) {
			    latex = "\\\"u";
			} else if (systemId.equals("&Auml;")) {
			    latex = "\\\"A";
			} else if (systemId.equals("&Ouml;")) {
			    latex = "\\\"O";
			} else if (systemId.equals("&Uuml;")) {
			    latex = "\\\"U";
			} else if (systemId.equals("&szlig;")) {
			    latex = "\\\"s";
			} else if (systemId.equals("&nbsp;")) {
			    latex = "\\ ";
			} else {
			    LogService.logMessage("Unknown entity: "+systemId, LogService.WARNING);
			    latex = systemId;
			}
			return new InputSource(new StringReader(latex));
		    }
		    public void endElement(String uri, String localName, String qName) {
			transformed.append(closingTagStack.pop());
		    }

		    public void startElement(String uri,
					     String localName, 
					     String qName, 
					     Attributes attributes) {
			qName = qName.toLowerCase();
			if (qName.equals("code")) {
			    transformed.append("\\java{");
			    closingTagStack.push("}");
  			} else if (qName.equals("em")) {
  			    transformed.append("\\emph{");
  			    closingTagStack.push("}");
  			} else if (qName.equals("var")) {
  			    transformed.append("\\para{");
  			    closingTagStack.push("}");

  			} else if (qName.equals("b")) {
			    LogService.logMessage(clazz.getName()+": physical markup used (b,i, or tt).", LogService.WARNING);
  			    transformed.append("\\textbf{");
  			    closingTagStack.push("}");
  			} else if (qName.equals("i")) {
			    LogService.logMessage(clazz.getName()+": physical markup used (b,i, or tt).", LogService.WARNING);
  			    transformed.append("\\textit{");
  			    closingTagStack.push("}");
  			} else if (qName.equals("tt")) {
			    LogService.logMessage(clazz.getName()+": physical markup used (b,i, or tt).", LogService.WARNING);
  			    transformed.append("\\texttt{");
  			    closingTagStack.push("}");

			} else if (qName.equals("center")) {
			    transformed.append("\n\\begin{center}\n");
			    closingTagStack.push("\n\\end{center}\n");
			} else if (qName.equals("ol")) {
			    transformed.append("\n\\begin{enumerate}\n");
			    closingTagStack.push("\n\\end{enumerate}\n");
			} else if (qName.equals("ul")) {
			    transformed.append("\n\\begin{itemize}\n");
			    closingTagStack.push("\n\\end{itemize}\n");
			} else if (qName.equals("li")) {
			    transformed.append("\n\\item ");
			    closingTagStack.push("");
			} else if (qName.equals("dl")) {
			    transformed.append("\n\\begin{description}\n");
			    closingTagStack.push("\n\\end{description}\n");
			} else if (qName.equals("dt")) {
			    transformed.append("\n\\item[");
			    closingTagStack.push("]");
			} else if (qName.equals("dd")) {
			    // nothing for dd
			    closingTagStack.push("");
			} else if (qName.equals("body")) {
			    transformed.append("");
			    closingTagStack.push("");
			} else if (qName.equals("sup")) {
			    transformed.append("$^{");
			    closingTagStack.push("}$");
			} else if (qName.equals("sub")) {
			    transformed.append("$_{");
			    closingTagStack.push("}$");
			} else if (qName.equals("br")) {
			    transformed.append("\\par\n");
			    closingTagStack.push("");
			} else if (qName.equals("p")) {
			    transformed.append("\\par\n");
			    closingTagStack.push("");
			} else if (qName.equals("a")) {
			    closingTagStack.push("\\footnote{\\url{"+attributes.getValue("href")+"}}");
			} else if (qName.equals("h1") || qName.equals("h2") || 
				   qName.equals("h3") || qName.equals("h4") || qName.equals("h5")) {
			    transformed.append("\n\\paragraph{");
			    closingTagStack.push("}");
			} else if (qName.equals("pre")) {
			    transformed.append("\\begin{verbatim}");
			    closingTagStack.push("\\end{verbatim}");
			} else {
			    transformed.append("");
			    closingTagStack.push("");
			    LogService.logMessage("Unknown tag: "+qName +" ("+clazz.getName()+")", LogService.WARNING);
			}
		    }

		});
	    StringBuffer linksReplaced = new StringBuffer();
	    Pattern pattern = Pattern.compile("\\{@link (.*?)\\}");
	    Matcher matcher = pattern.matcher(transformed);
	    while (matcher.find()) {
		String classname = matcher.group(1);
		int period = classname.lastIndexOf(".");
		if (period != -1) classname = classname.substring(period+1);
		matcher.appendReplacement(linksReplaced, "\\\\op{"+classname+"}");
	    }
	    matcher.appendTail(linksReplaced);
	    return linksReplaced.toString();
	} catch (Throwable e) {
	    LogService.logMessage(clazz.getName()+": "+e, LogService.ERROR);
	    return "Cannot parse class comment: "+e;
	}
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -