/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.jlab.groot.ui;
import java.awt.font.TextAttribute;
import java.text.AttributedString;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;
/**
*
* @author gavalian
*/
public class LatexTextTools {
private static Map greekTranslation = getTable();
public static Map getTable(){
Map table = new LinkedHashMap();
table.put("#alpha", "\u03B1");
table.put("#beta" , "\u03B2");
table.put("#gamma", "\u03B3");
table.put("#delta" , "\u03B4");
table.put("#Delta" , "\u0394");
table.put("#eps" , "\u03B5");
table.put("#zeta" , "\u03B6");
table.put("#eta" , "\u03B7");
table.put("#kappa" , "\u03BA");
table.put("#lamda" , "\u03BB");
table.put("#mu" , "\u03BC");
table.put("#nu" , "\u03BD");
table.put("#xi" , "\u03BE");
table.put("#rho" , "\u03C1");
table.put("#sigma" , "\u03C3");
table.put("#tau" , "\u03C4");
table.put("#phi" , "\u03C6");
table.put("#chi" , "\u03C7");
table.put("#psi" , "\u03C8");
table.put("#theta", "\u03B8");
table.put("#omega", "\u03C9");
table.put("#pi" , "\u03C0");
table.put("#Theta", "\u0398");
table.put("#degree", "\u00B0");
table.put("#rarrow" , "\u2192");
table.put("#larrow" , "\u2190");
table.put("#uarrow" , "\u2191");
table.put("#darrow" , "\u2193");
table.put("#overline" , "\u0305");
table.put("#bar" , "\u0304");
return table;
}
public static String convertUnicode(String original){
if(original.contains("#")==false&&original.contains("^")==false) return original;
String newString = original;
for(Map.Entry entry : LatexTextTools.greekTranslation.entrySet()){
newString = newString.replaceAll(entry.getKey(), entry.getValue());
}
return newString;
}
public static AttributedString converSubScript(String line){
ArrayList supindex = new ArrayList();
ArrayList subindex = new ArrayList();
int index = line.indexOf("^");
String newString = line;
while(index>=0){
//System.out.println("adding index = " + index);
supindex.add(index);
//newString = newString.replaceFirst("^", "");
newString = newString.substring(0, index) + newString.substring(index+1);
index = newString.indexOf("_");
//System.out.println(newString);
}
AttributedString string = new AttributedString(newString);
for(Integer indx : supindex){
if(indx>0){
//System.out.println(" L = " + indx);
string.addAttribute(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUPER, indx,indx+1);
}
}
return string;
}
public static AttributedString converSuperScript(String line){
ArrayList supindex = new ArrayList();
int index = line.indexOf("^");
String newString = line;
while(index>=0){
//System.out.println("adding index = " + index);
supindex.add(index);
//newString = newString.replaceFirst("^", "");
newString = newString.substring(0, index) + newString.substring(index+1);
index = newString.indexOf("^");
//System.out.println(newString);
}
AttributedString string = new AttributedString(newString);
for(Integer indx : supindex){
if(indx>0){
//System.out.println(" L = " + indx);
string.addAttribute(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUPER, indx,indx+1);
}
}
return string;
}
public static void main(String[] args){
String text = "Value #theta (#alpha + #beta) = #gamma^2 = 5.0 #pi^3 = 3.14^5";
String latex = LatexTextTools.convertUnicode(text);
System.out.println(latex);
AttributedString str = LatexTextTools.converSuperScript(latex);
}
}
Ads help maintain this website.