From 905918aaf2cf7174628225604021edade190dcf8 Mon Sep 17 00:00:00 2001 From: henrikjust Date: Tue, 25 Jan 2011 15:56:13 +0000 Subject: [PATCH] JabRef support git-svn-id: svn://svn.code.sf.net/p/writer2latex/code/trunk@84 f0f2a975-2e09-46c8-9428-3b39399b9f3c --- build.xml | 2 +- source/distro/Readme.txt | 6 +- source/distro/changelog.txt | 8 +- source/distro/doc/user-manual.odt | Bin 51083 -> 51332 bytes .../w2lcommon/filter/FilterDataParser.java | 55 ++++++++- .../w2lcommon/filter/OptionsDialogBase.java | 1 + .../comp/writer4latex/BibliographyDialog.java | 104 +++++++++--------- .../da/comp/writer4latex/ExternalApps.java | 19 +++- .../da/comp/writer4latex/TeXImportFilter.java | 6 +- .../da/comp/writer4latex/TeXify.java | 38 ++++--- .../da/comp/writer4latex/Writer4LaTeX.java | 38 +++++-- .../writer2latex/api/ConverterFactory.java | 8 +- .../writer2latex/latex/FieldConverter.java | 41 +++++-- .../writer2latex/latex/InlineConverter.java | 4 +- .../java/writer2latex/latex/LaTeXConfig.java | 73 ++++++------ .../writer2latex/latex/SectionConverter.java | 22 +++- .../java/writer2latex/latex/util/Context.java | 13 ++- source/oxt/writer2latex/description.xml | 2 +- source/oxt/writer2xhtml/Options.xcs | 3 +- source/oxt/writer2xhtml/description.xml | 2 +- source/oxt/writer4latex/Options.xcs | 8 +- source/oxt/writer4latex/Options.xcu | 12 +- .../writer4latex/W4LDialogs/Bibliography.xdl | 32 +++--- source/oxt/writer4latex/description.xml | 2 +- .../oxt/xhtml-config-sample/description.xml | 2 +- source/readme-source.txt | 2 +- 26 files changed, 315 insertions(+), 188 deletions(-) diff --git a/build.xml b/build.xml index 434657d..5a1e82e 100644 --- a/build.xml +++ b/build.xml @@ -35,7 +35,7 @@ - + diff --git a/source/distro/Readme.txt b/source/distro/Readme.txt index 18d2ef4..5e488f0 100644 --- a/source/distro/Readme.txt +++ b/source/distro/Readme.txt @@ -1,7 +1,7 @@ -Writer2LaTeX version 1.1.9 (beta test release) -============================================== +Writer2LaTeX version 1.1.6 (alpha test release) +=============================================== -This is the distribution of Writer2LaTeX version 1.1.9 +This is the distribution of Writer2LaTeX version 1.1.6 Latest version can be found at the web site http://writer2latex.sourceforge.net diff --git a/source/distro/changelog.txt b/source/distro/changelog.txt index f0c8adf..fd31513 100644 --- a/source/distro/changelog.txt +++ b/source/distro/changelog.txt @@ -1,6 +1,12 @@ Changelog for Writer2LaTeX version 1.0 -> 1.2 ----------- version 1.1.9 ---------- +---------- version 1.1.6 ---------- + +[w4l] Bibliography options page has been reworked to include JabRef support and unify BibTeX directory (which is now allowed + to contain special characters like spaces) + +[w2l] Added support for JabRef reference marks: A new option jabref_bibtex_files has been added to give the names of + the BibTeX files from JabRef [w2x] New option include_toc (default true) for EPUB export: If set to false, the table of content will not be exported diff --git a/source/distro/doc/user-manual.odt b/source/distro/doc/user-manual.odt index 40f7c8a6d165c091e1812ee0af3ee05807ee6b39..c204083c622118560b4b0441658a6709963a08e0 100644 GIT binary patch delta 48844 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 n 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
    al|q4@`PA&>v?u|kLL9r|g7r$yH};l3UD{` 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 (not very elegant) + Object resources = props.get("Resources"); + String[] sResources = null; + if (resources!=null && AnyConverter.isString(resources)) { + try { + sResources = substituteVariables(AnyConverter.toString(resources)).split(";"); + } + catch (com.sun.star.lang.IllegalArgumentException e) { + // Failed to convert to String; should not happen - ignore + } + } + Object auto = props.get("AutoCreate"); boolean bAutoCreate = false; if (auto!=null && AnyConverter.isString(auto)) { @@ -204,7 +217,38 @@ public class FilterDataParser { // ignore } } - + + // Load the resources from the specified URLs, if any + if (sfa2!=null && sResources!=null) { + for (String sResource : sResources) { + try { + String[] sParts = sResource.split("!"); + if (sParts.length==3) { + // Format is !! + XInputStream xIs = sfa2.openFileRead(sParts[2]); + if (xIs!=null) { + InputStream is = new XInputStreamToInputStreamAdapter(xIs); + converter.readResource(is, sParts[1], sParts[0]); + is.close(); + xIs.closeInput(); + } + } // otherwise wrong format, ignore + } + catch (IOException e) { + // ignore + } + catch (NotConnectedException e) { + // ignore + } + catch (CommandAbortedException e) { + // ignore + } + catch (com.sun.star.uno.Exception e) { + // ignore + } + } + } + // Create config if required try { if (bAutoCreate && sfa2!=null && sConfig!=null && !sConfig.startsWith("*") && !sfa2.exists(sConfig)) { @@ -271,7 +315,8 @@ public class FilterDataParser { Enumeration keys = props.keys(); while (keys.hasMoreElements()) { String sKey = keys.nextElement(); - if (!"ConfigURL".equals(sKey) && !"TemplateURL".equals(sKey) && !"StyleSheetURL".equals(sKey) && !"AutoCreate".equals(sKey)) { + if (!"ConfigURL".equals(sKey) && !"TemplateURL".equals(sKey) && !"StyleSheetURL".equals(sKey) + && !"Resources".equals(sKey) && !"AutoCreate".equals(sKey)) { Object value = props.get(sKey); if (AnyConverter.isString(value)) { try { diff --git a/source/java/org/openoffice/da/comp/w2lcommon/filter/OptionsDialogBase.java b/source/java/org/openoffice/da/comp/w2lcommon/filter/OptionsDialogBase.java index d847d5e..0a587c4 100644 --- a/source/java/org/openoffice/da/comp/w2lcommon/filter/OptionsDialogBase.java +++ b/source/java/org/openoffice/da/comp/w2lcommon/filter/OptionsDialogBase.java @@ -402,6 +402,7 @@ public abstract class OptionsDialogBase extends DialogBase implements filterData.put("ConfigURL",expander.expandMacros(XPropertySetHelper.getPropertyValueAsString(xCfgProps,"ConfigURL"))); filterData.put("TemplateURL",expander.expandMacros(XPropertySetHelper.getPropertyValueAsString(xCfgProps,"TargetTemplateURL"))); filterData.put("StyleSheetURL",expander.expandMacros(XPropertySetHelper.getPropertyValueAsString(xCfgProps,"StyleSheetURL"))); + // TODO: Resources... XPropertySetHelper.setPropertyValue(xProps,"ConfigName",sConfigNames[i]); bFound = true; } diff --git a/source/java/org/openoffice/da/comp/writer4latex/BibliographyDialog.java b/source/java/org/openoffice/da/comp/writer4latex/BibliographyDialog.java index e67e43f..e421c0e 100644 --- a/source/java/org/openoffice/da/comp/writer4latex/BibliographyDialog.java +++ b/source/java/org/openoffice/da/comp/writer4latex/BibliographyDialog.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2010 by Henrik Just + * Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2010-10-10) + * Version 1.2 (2011-01-24) * */ @@ -85,18 +85,18 @@ public final class BibliographyDialog if (sMethod.equals("external_event") ){ return handleExternalEvent(dlg, event); } + else if (sMethod.equals("BibTeXDirClick")) { + return bibTeXDirClick(dlg); + } else if (sMethod.equals("ConvertZoteroCitationsChange")) { return convertZoteroCitationsChange(dlg); } - else if (sMethod.equals("ZoteroBibTeXDirClick")) { - return zoteroBibTeXDirClick(dlg); + else if (sMethod.equals("ConvertJabRefCitationsChange")) { + return convertJabRefCitationsChange(dlg); } else if (sMethod.equals("UseExternalBibTeXFilesChange")) { return useExternalBibTeXFilesChange(dlg); } - else if (sMethod.equals("ExternalBibTeXDirClick")) { - return externalBibTeXDirClick(dlg); - } } catch (com.sun.star.uno.RuntimeException e) { throw e; @@ -108,7 +108,8 @@ public final class BibliographyDialog } public String[] getSupportedMethodNames() { - String[] sNames = { "external_event", "ConvertZoteroCitationsChange", "ZoteroBibTeXDirClick", "UseExternalBibTeXFilesChange", "ExternalBibTeXDirClick" }; + String[] sNames = { "external_event", "UseExternalBibTeXFilesChange", "ConvertZoteroCitationsChange", + "ConvertJabRefCitationsChange", "ExternalBibTeXDirClick" }; return sNames; } @@ -153,16 +154,16 @@ public final class BibliographyDialog try { Object view = registry.getRegistryView(REGISTRY_PATH, false); XPropertySet xProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,view); - dlg.setCheckBoxStateAsBoolean("ConvertZoteroCitations", - XPropertySetHelper.getPropertyValueAsBoolean(xProps, "ConvertZoteroCitations")); - dlg.setTextFieldText("ZoteroBibTeXDir", - XPropertySetHelper.getPropertyValueAsString(xProps, "ZoteroBibTeXDir")); - dlg.setTextFieldText("NatbibOptions", - XPropertySetHelper.getPropertyValueAsString(xProps, "NatbibOptions")); dlg.setCheckBoxStateAsBoolean("UseExternalBibTeXFiles", XPropertySetHelper.getPropertyValueAsBoolean(xProps, "UseExternalBibTeXFiles")); - dlg.setTextFieldText("ExternalBibTeXDir", - XPropertySetHelper.getPropertyValueAsString(xProps, "ExternalBibTeXDir")); + dlg.setCheckBoxStateAsBoolean("ConvertZoteroCitations", + XPropertySetHelper.getPropertyValueAsBoolean(xProps, "ConvertZoteroCitations")); + dlg.setCheckBoxStateAsBoolean("ConvertJabRefCitations", + XPropertySetHelper.getPropertyValueAsBoolean(xProps, "ConvertJabRefCitations")); + dlg.setTextFieldText("NatbibOptions", + XPropertySetHelper.getPropertyValueAsString(xProps, "NatbibOptions")); + dlg.setTextFieldText("BibTeXDir", + XPropertySetHelper.getPropertyValueAsString(xProps, "BibTeXDir")); registry.disposeRegistryView(view); } catch (Exception e) { @@ -180,11 +181,11 @@ public final class BibliographyDialog try { Object view = registry.getRegistryView(REGISTRY_PATH, true); XPropertySet xProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,view); - XPropertySetHelper.setPropertyValue(xProps, "ConvertZoteroCitations", dlg.getCheckBoxStateAsBoolean("ConvertZoteroCitations")); - XPropertySetHelper.setPropertyValue(xProps, "ZoteroBibTeXDir", dlg.getTextFieldText("ZoteroBibTeXDir")); - XPropertySetHelper.setPropertyValue(xProps, "NatbibOptions", dlg.getTextFieldText("NatbibOptions")); XPropertySetHelper.setPropertyValue(xProps, "UseExternalBibTeXFiles", dlg.getCheckBoxStateAsBoolean("UseExternalBibTeXFiles")); - XPropertySetHelper.setPropertyValue(xProps, "ExternalBibTeXDir", dlg.getTextFieldText("ExternalBibTeXDir")); + XPropertySetHelper.setPropertyValue(xProps, "ConvertZoteroCitations", dlg.getCheckBoxStateAsBoolean("ConvertZoteroCitations")); + XPropertySetHelper.setPropertyValue(xProps, "ConvertJabRefCitations", dlg.getCheckBoxStateAsBoolean("ConvertJabRefCitations")); + XPropertySetHelper.setPropertyValue(xProps, "NatbibOptions", dlg.getTextFieldText("NatbibOptions")); + XPropertySetHelper.setPropertyValue(xProps, "BibTeXDir", dlg.getTextFieldText("BibTeXDir")); // Commit registry changes XChangesBatch xUpdateContext = (XChangesBatch) @@ -203,45 +204,44 @@ public final class BibliographyDialog } } - private boolean convertZoteroCitationsChange(DialogAccess dlg) { - // Update dialog according to the current setting of the checkbox - boolean bConvert = dlg.getCheckBoxStateAsBoolean("ConvertZoteroCitations"); - dlg.setControlEnabled("ZoteroBibTeXDirLabel", bConvert); - dlg.setControlEnabled("ZoteroBibTeXDir", bConvert); - dlg.setControlEnabled("ZoteroBibTeXDirButton", bConvert); - dlg.setControlEnabled("NatbibOptionsLabel", bConvert); - dlg.setControlEnabled("NatbibOptions", bConvert); - return true; - } - - private boolean zoteroBibTeXDirClick(DialogAccess dlg) { - String sPath = folderPicker.getPath(); - if (sPath!=null) { - try { - dlg.setTextFieldText("ZoteroBibTeXDir", new File(new URI(sPath)).getCanonicalPath()); - } - catch (IOException e) { - } - catch (URISyntaxException e) { - } - } - return true; - } - private boolean useExternalBibTeXFilesChange(DialogAccess dlg) { - // Update dialog according to the current setting of the checkbox - boolean bExternal = dlg.getCheckBoxStateAsBoolean("UseExternalBibTeXFiles"); - dlg.setControlEnabled("ExternalBibTeXDirLabel", bExternal); - dlg.setControlEnabled("ExternalBibTeXDir", bExternal); - dlg.setControlEnabled("ExternalBibTeXDirButton", bExternal); + enableBibTeXDir(dlg); return true; } - private boolean externalBibTeXDirClick(DialogAccess dlg) { + private boolean convertZoteroCitationsChange(DialogAccess dlg) { + enableNatbibOptions(dlg); + enableBibTeXDir(dlg); + return true; + } + + private boolean convertJabRefCitationsChange(DialogAccess dlg) { + enableNatbibOptions(dlg); + enableBibTeXDir(dlg); + return true; + } + + private void enableNatbibOptions(DialogAccess dlg) { + boolean bConvertZotero = dlg.getCheckBoxStateAsBoolean("ConvertZoteroCitations"); + boolean bConvertJabRef = dlg.getCheckBoxStateAsBoolean("ConvertJabRefCitations"); + dlg.setControlEnabled("NatbibOptionsLabel", bConvertZotero || bConvertJabRef); + dlg.setControlEnabled("NatbibOptions", bConvertZotero || bConvertJabRef); + } + + private void enableBibTeXDir(DialogAccess dlg) { + boolean bExternal = dlg.getCheckBoxStateAsBoolean("UseExternalBibTeXFiles"); + boolean bConvertZotero = dlg.getCheckBoxStateAsBoolean("ConvertZoteroCitations"); + boolean bConvertJabRef = dlg.getCheckBoxStateAsBoolean("ConvertJabRefCitations"); + dlg.setControlEnabled("BibTeXDirLabel", bExternal || bConvertZotero || bConvertJabRef); + dlg.setControlEnabled("BibTeXDir", bExternal || bConvertZotero || bConvertJabRef); + dlg.setControlEnabled("BibTeXDirButton", bExternal|| bConvertZotero || bConvertJabRef); + } + + private boolean bibTeXDirClick(DialogAccess dlg) { String sPath = folderPicker.getPath(); if (sPath!=null) { try { - dlg.setTextFieldText("ExternalBibTeXDir", new File(new URI(sPath)).getCanonicalPath()); + dlg.setTextFieldText("BibTeXDir", new File(new URI(sPath)).getCanonicalPath()); } catch (IOException e) { } diff --git a/source/java/org/openoffice/da/comp/writer4latex/ExternalApps.java b/source/java/org/openoffice/da/comp/writer4latex/ExternalApps.java index d4d31c7..2d65e31 100644 --- a/source/java/org/openoffice/da/comp/writer4latex/ExternalApps.java +++ b/source/java/org/openoffice/da/comp/writer4latex/ExternalApps.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2010 by Henrik Just + * Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2010-10-11) + * Version 1.2 (2011-01-25) * */ @@ -31,6 +31,7 @@ import java.io.IOException; import java.lang.Process; import java.lang.ProcessBuilder; import java.util.HashMap; +import java.util.Map; import java.util.Vector; import org.openoffice.da.comp.w2lcommon.helper.RegistryHelper; @@ -99,11 +100,12 @@ public class ExternalApps { * @param sAppName the name of the application to execute * @param sFileName the file name to use * @param workDir the working directory to use + * @param env map of environment variables to set (or null if no variables needs to be set) * @param bWaitFor true if the method should wait for the execution to finish * @return error code */ - public int execute(String sAppName, String sFileName, File workDir, boolean bWaitFor) { - return execute(sAppName, "", sFileName, workDir, bWaitFor); + public int execute(String sAppName, String sFileName, File workDir, Map env, boolean bWaitFor) { + return execute(sAppName, "", sFileName, workDir, env, bWaitFor); } /** Execute an external application @@ -111,10 +113,11 @@ public class ExternalApps { * @param sCommand subcommand/option to pass to the command * @param sFileName the file name to use * @param workDir the working directory to use + * @param env map of environment variables to set (or null if no variables needs to be set) * @param bWaitFor true if the method should wait for the execution to finish * @return error code */ - public int execute(String sAppName, String sCommand, String sFileName, File workDir, boolean bWaitFor) { + public int execute(String sAppName, String sCommand, String sFileName, File workDir, Map env, boolean bWaitFor) { // Assemble the command String[] sApp = getApplication(sAppName); if (sApp==null) { return 1; } @@ -129,6 +132,12 @@ public class ExternalApps { ProcessBuilder pb = new ProcessBuilder(command); pb.directory(workDir); + if (env!=null) { + pb.environment().putAll(env); + if (env.containsKey("BIBINPUTS")) { + System.out.println("Running "+sApp[0]+" with BIBINPUTS="+env.get("BIBINPUTS")); + } + } Process proc = pb.start(); // Gobble the error stream of the application diff --git a/source/java/org/openoffice/da/comp/writer4latex/TeXImportFilter.java b/source/java/org/openoffice/da/comp/writer4latex/TeXImportFilter.java index 7f30963..2dfaa38 100644 --- a/source/java/org/openoffice/da/comp/writer4latex/TeXImportFilter.java +++ b/source/java/org/openoffice/da/comp/writer4latex/TeXImportFilter.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2009 by Henrik Just + * Copyright: 2002-2010 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2009-06-19) + * Version 1.2 (2011-01-25) * */ @@ -291,7 +291,7 @@ public class TeXImportFilter extends WeakBase implements XInitialization, XNamed System.out.println("Executing tex4ht with command "+sCommand+" on file "+file.getName()); - externalApps.execute(ExternalApps.MK4HT, sCommand, file.getName(), file.getParentFile(), true); + externalApps.execute(ExternalApps.MK4HT, sCommand, file.getName(), file.getParentFile(), null, true); if (xStatus!=null) { nStep+=5; xStatus.setValue(nStep); } diff --git a/source/java/org/openoffice/da/comp/writer4latex/TeXify.java b/source/java/org/openoffice/da/comp/writer4latex/TeXify.java index 53f2b1f..5b0e971 100644 --- a/source/java/org/openoffice/da/comp/writer4latex/TeXify.java +++ b/source/java/org/openoffice/da/comp/writer4latex/TeXify.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2009 by Henrik Just + * Copyright: 2002-2010 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2009-11-29) + * Version 1.2 (2011-01-25) * */ @@ -28,10 +28,12 @@ package org.openoffice.da.comp.writer4latex; import java.io.File; import java.io.IOException; +import java.util.HashMap; +import java.util.Map; import com.sun.star.uno.XComponentContext; -/** This class builds LaTeX documents into dvi, postscript or pdf and displays +/** This class builds LaTeX documents into DVI, Postscript or PDF and displays * the result. */ public final class TeXify { @@ -74,12 +76,13 @@ public final class TeXify { /** Process a document * @param file the LaTeX file to process + * @param sBibinputs value for the BIBINPUTS environment variable (or null if it should not be extended) * @param nBackend the desired backend format (generic, dvips, pdftex) * @param bView set the true if the result should be displayed in the viewer * @throws IOException if the document cannot be read - * @return true if the first LaTeX run was succesful + * @return true if the first LaTeX run was successful */ - public boolean process(File file, short nBackend, boolean bView) throws IOException { + public boolean process(File file, String sBibinputs, short nBackend, boolean bView) throws IOException { // Remove extension from file if (file.getName().endsWith(".tex")) { file = new File(file.getParentFile(), @@ -92,38 +95,38 @@ public final class TeXify { // Process LaTeX document boolean bResult = false; if (nBackend==GENERIC) { - bResult = doTeXify(genericTexify, file); + bResult = doTeXify(genericTexify, file, sBibinputs); if (!bResult) return false; if (externalApps.execute(ExternalApps.DVIVIEWER, new File(file.getParentFile(),file.getName()+".dvi").getPath(), - file.getParentFile(), false)>0) { + file.getParentFile(), null, false)>0) { throw new IOException("Error executing dvi viewer"); } } else if (nBackend==PDFTEX) { - bResult = doTeXify(pdfTexify, file); + bResult = doTeXify(pdfTexify, file, sBibinputs); if (!bResult) return false; if (externalApps.execute(ExternalApps.PDFVIEWER, new File(file.getParentFile(),file.getName()+".pdf").getPath(), - file.getParentFile(), false)>0) { + file.getParentFile(), null, false)>0) { throw new IOException("Error executing pdf viewer"); } } else if (nBackend==DVIPS) { - bResult = doTeXify(dvipsTexify, file); + bResult = doTeXify(dvipsTexify, file, sBibinputs); if (!bResult) return false; if (externalApps.execute(ExternalApps.POSTSCRIPTVIEWER, new File(file.getParentFile(),file.getName()+".ps").getPath(), - file.getParentFile(), false)>0) { + file.getParentFile(), null, false)>0) { throw new IOException("Error executing postscript viewer"); } } else if (nBackend==XETEX) { - bResult = doTeXify(xeTexify, file); + bResult = doTeXify(xeTexify, file, sBibinputs); if (!bResult) return false; if (externalApps.execute(ExternalApps.PDFVIEWER, new File(file.getParentFile(),file.getName()+".pdf").getPath(), - file.getParentFile(), false)>0) { + file.getParentFile(), null, false)>0) { throw new IOException("Error executing pdf viewer"); } } @@ -131,11 +134,16 @@ public final class TeXify { } - private boolean doTeXify(String[] sAppList, File file) throws IOException { + private boolean doTeXify(String[] sAppList, File file, String sBibinputs) throws IOException { for (int i=0; i env =null; + if (ExternalApps.BIBTEX.equals(sAppList[i])) { + env = new HashMap(); + env.put("BIBINPUTS", sBibinputs); + } int nReturnCode = externalApps.execute( - sAppList[i], file.getName(), file.getParentFile(), true); + sAppList[i], file.getName(), file.getParentFile(), env, true); System.out.println("Return code from "+sAppList[i]+": "+nReturnCode); if (i==0 && nReturnCode>0) { return false; diff --git a/source/java/org/openoffice/da/comp/writer4latex/Writer4LaTeX.java b/source/java/org/openoffice/da/comp/writer4latex/Writer4LaTeX.java index e17a5bb..f8c9696 100644 --- a/source/java/org/openoffice/da/comp/writer4latex/Writer4LaTeX.java +++ b/source/java/org/openoffice/da/comp/writer4latex/Writer4LaTeX.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2010 by Henrik Just + * Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2010-10-13) + * Version 1.2 (2011-01-25) * */ @@ -44,6 +44,7 @@ import com.sun.star.task.XStatusIndicator; import com.sun.star.task.XStatusIndicatorFactory; import com.sun.star.ui.dialogs.ExecutableDialogResults; import com.sun.star.ui.dialogs.XExecutableDialog; +import com.sun.star.uno.AnyConverter; import com.sun.star.uno.UnoRuntime; import com.sun.star.uno.XComponentContext; @@ -54,6 +55,7 @@ import org.openoffice.da.comp.w2lcommon.helper.RegistryHelper; import org.openoffice.da.comp.w2lcommon.helper.XPropertySetHelper; import writer2latex.util.CSVList; +import writer2latex.util.Misc; /** This class implements the ui (dispatch) commands provided by Writer4LaTeX. * The actual processing is done by the three core classes TeXify, @@ -202,6 +204,8 @@ public final class Writer4LaTeX extends WeakBase // First work a bit on the FilterData (get the backend and set bibliography options) String sBackend = "generic"; + String sBibinputs = null; + PropertyHelper mediaHelper = new PropertyHelper(mediaProps); Object filterData = mediaHelper.get("FilterData"); if (filterData instanceof PropertyValue[]) { @@ -217,14 +221,24 @@ public final class Writer4LaTeX extends WeakBase try { Object view = registry.getRegistryView(BibliographyDialog.REGISTRY_PATH, false); XPropertySet xProps = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,view); + String sBibTeXFiles = getFileList(XPropertySetHelper.getPropertyValueAsString(xProps, "BibTeXDir")); if (XPropertySetHelper.getPropertyValueAsBoolean(xProps, "ConvertZoteroCitations")) { - filterHelper.put("zotero_bibtex_files", getFileList(XPropertySetHelper.getPropertyValueAsString(xProps, "ZoteroBibTeXDir"))); + filterHelper.put("zotero_bibtex_files", sBibTeXFiles); + filterHelper.put("natbib_options", XPropertySetHelper.getPropertyValueAsString(xProps, "NatbibOptions")); + } + if (XPropertySetHelper.getPropertyValueAsBoolean(xProps, "ConvertJabRefCitations")) { + filterHelper.put("jabref_bibtex_files", sBibTeXFiles); filterHelper.put("natbib_options", XPropertySetHelper.getPropertyValueAsString(xProps, "NatbibOptions")); } if (XPropertySetHelper.getPropertyValueAsBoolean(xProps, "UseExternalBibTeXFiles")) { - filterHelper.put("external_bibtex_files", getFileList(XPropertySetHelper.getPropertyValueAsString(xProps, "ExternalBibTeXDir"))); + filterHelper.put("external_bibtex_files", sBibTeXFiles); } - mediaHelper.put("FilterData",filterHelper.toArray()); + String sBibTeXDir = XPropertySetHelper.getPropertyValueAsString(xProps, "BibTeXDir"); + if (sBibTeXDir.length()>0) { + sBibinputs = sBibTeXDir+":"; + } + + mediaHelper.put("FilterData",filterHelper.toArray()); mediaProps = mediaHelper.toArray(); registry.disposeRegistryView(view); } @@ -255,16 +269,16 @@ public final class Writer4LaTeX extends WeakBase try { if (sBackend=="pdftex") { - bResult = texify.process(file, TeXify.PDFTEX, true); + bResult = texify.process(file, sBibinputs, TeXify.PDFTEX, true); } else if (sBackend=="dvips") { - bResult = texify.process(file, TeXify.DVIPS, true); + bResult = texify.process(file, sBibinputs, TeXify.DVIPS, true); } else if (sBackend=="xetex") { - bResult = texify.process(file, TeXify.XETEX, true); + bResult = texify.process(file, sBibinputs, TeXify.XETEX, true); } else if (sBackend=="generic") { - bResult = texify.process(file, TeXify.GENERIC, true); + bResult = texify.process(file, sBibinputs, TeXify.GENERIC, true); } } catch (IOException e) { @@ -289,11 +303,13 @@ public final class Writer4LaTeX extends WeakBase File[] files = dir.listFiles(); for (File file : files) { if (file.isFile() && file.getName().endsWith(".bib")) { - filelist.addValue(file.getAbsolutePath()); + //filelist.addValue(file.getAbsolutePath()); + filelist.addValue(Misc.removeExtension(file.getName())); } } } - return filelist.toString(); + String sFileList = filelist.toString(); + return sFileList.length()>0 ? sFileList : "dummy"; } private void viewLog() { diff --git a/source/java/writer2latex/api/ConverterFactory.java b/source/java/writer2latex/api/ConverterFactory.java index c42b812..e2744c4 100644 --- a/source/java/writer2latex/api/ConverterFactory.java +++ b/source/java/writer2latex/api/ConverterFactory.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2010 by Henrik Just + * Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2011-01-12) + * Version 1.2 (2011-01-25) * */ @@ -32,8 +32,8 @@ package writer2latex.api; public class ConverterFactory { // Version information - private static final String VERSION = "1.1.9"; - private static final String DATE = "2011-01-12"; + private static final String VERSION = "1.1.6"; + private static final String DATE = "2011-01-25"; /** Return the Writer2LaTeX version in the form * (major version).(minor version).(patch level)
    diff --git a/source/java/writer2latex/latex/FieldConverter.java b/source/java/writer2latex/latex/FieldConverter.java index 08822ef..4b962f0 100644 --- a/source/java/writer2latex/latex/FieldConverter.java +++ b/source/java/writer2latex/latex/FieldConverter.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2010 by Henrik Just + * Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2010-10-13) + * Version 1.2 (2011-01-24) * */ @@ -58,6 +58,9 @@ public class FieldConverter extends ConverterHelper { // Identify Zotero items private static final String ZOTERO_ITEM = "ZOTERO_ITEM"; + // Identify JabRef items + private static final String JABREF_ITEM_1 = "JR_cite_1"; + private static final String JABREF_ITEM_2 = "JR_cite_2"; // Links & references private ExportNameCollection targets = new ExportNameCollection(true); @@ -79,6 +82,7 @@ public class FieldConverter extends ConverterHelper { private boolean bUsesTitleref = false; private boolean bUsesOooref = false; private boolean bConvertZotero = false; + private boolean bConvertJabRef = false; private boolean bNeedNatbib = false; public FieldConverter(OfficeReader ofr, LaTeXConfig config, ConverterPalette palette) { @@ -86,6 +90,7 @@ public class FieldConverter extends ConverterHelper { // hyperref.sty is not compatible with titleref.sty and oooref.sty: bUseHyperref = config.useHyperref() && !config.useTitleref() && !config.useOooref(); bConvertZotero = config.useBibtex() && config.zoteroBibtexFiles().length()>0; + bConvertJabRef = config.useBibtex() && config.jabrefBibtexFiles().length()>0; } /**

    Append declarations needed by the FieldConverter to @@ -598,7 +603,7 @@ public class FieldConverter extends ConverterHelper { ldp.append("}"); } - oc.setInZoteroText(true); + oc.setInZoteroJabRefText(true); bNeedNatbib = true; @@ -609,6 +614,27 @@ public class FieldConverter extends ConverterHelper { return false; } + // Try to handle this reference name as a JabRef reference, return true on success + private boolean handleJabRefReferenceName(String sName, LaTeXDocumentPortion ldp, Context oc) { + // First parse the reference name: + // A JabRef reference name has the form JR_cite_n_identifiers where + // n=1 for (Author date) and n=2 for Author (date) citations + // identifiers is a comma separated list of BibTeX keys + if (sName.startsWith(JABREF_ITEM_1)) { + ldp.append("\\citep{").append(sName.substring(JABREF_ITEM_1.length()+1)).append("}"); + oc.setInZoteroJabRefText(true); + bNeedNatbib = true; + return true; + } + else if (sName.startsWith(JABREF_ITEM_2)) { + ldp.append("\\citet{").append(sName.substring(JABREF_ITEM_2.length()+1)).append("}"); + oc.setInZoteroJabRefText(true); + bNeedNatbib = true; + return true; + } + return false; + } + private String shortenRefname(String s) { // For Zotero items, use the trailing unique identifier if (s.startsWith(ZOTERO_ITEM)) { @@ -627,8 +653,8 @@ public class FieldConverter extends ConverterHelper { * @param oc the current context */ public void handleReferenceMarkEnd(Element node, LaTeXDocumentPortion ldp, Context oc) { - // Nothing to do, except to mark that this ends any Zotero citation - oc.setInZoteroText(false); + // Nothing to do, except to mark that this ends any Zotero/JabRef citation + oc.setInZoteroJabRefText(false); } /**

    Process a reference mark (text:reference-mark or text:reference-mark-start tag)

    @@ -640,8 +666,9 @@ public class FieldConverter extends ConverterHelper { public void handleReferenceMark(Element node, LaTeXDocumentPortion ldp, Context oc) { if (!oc.isInSection() && !oc.isInCaption() && !oc.isVerbatim()) { String sName = node.getAttribute(XMLString.TEXT_NAME); - // Zotero (mis)uses reference marks to store citations, so check this first - if (sName!=null && (!bConvertZotero || !handleZoteroReferenceName(sName, ldp, oc))) { + // Zotero and JabRef (mis)uses reference marks to store citations, so check this first + if (sName!=null && (!bConvertZotero || !handleZoteroReferenceName(sName, ldp, oc)) + && (!bConvertJabRef || !handleJabRefReferenceName(sName, ldp, oc))) { // Plain reference mark // Note: Always include \label here, even when it's not used ldp.append("\\label{ref:"+refnames.getExportName(shortenRefname(sName))+"}"); diff --git a/source/java/writer2latex/latex/InlineConverter.java b/source/java/writer2latex/latex/InlineConverter.java index 8300d53..81a7f8d 100644 --- a/source/java/writer2latex/latex/InlineConverter.java +++ b/source/java/writer2latex/latex/InlineConverter.java @@ -195,11 +195,11 @@ public class InlineConverter extends ConverterHelper { case Node.TEXT_NODE: String s = childNode.getNodeValue(); if (s.length() > 0) { - if (oc.isInZoteroText()) { // Comment out Zotero citations + if (oc.isInZoteroJabRefText()) { // Comment out Zotero citations ldp.append("%"); } ldp.append(palette.getI18n().convert(s, false, oc.getLang())); - if (oc.isInZoteroText()) { // End comment out + if (oc.isInZoteroJabRefText()) { // End comment out ldp.nl(); } } diff --git a/source/java/writer2latex/latex/LaTeXConfig.java b/source/java/writer2latex/latex/LaTeXConfig.java index 0f1d4cc..490f571 100644 --- a/source/java/writer2latex/latex/LaTeXConfig.java +++ b/source/java/writer2latex/latex/LaTeXConfig.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2010 by Henrik Just + * Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2010-12-15) + * Version 1.2 (2011-01-23) * */ @@ -48,7 +48,7 @@ public class LaTeXConfig extends writer2latex.base.ConfigBase { ///////////////////////////////////////////////////////////////////////// // I. Define items needed by ConfigBase - protected int getOptionCount() { return 67; } + protected int getOptionCount() { return 68; } protected String getDefaultConfigPath() { return "/writer2latex/latex/config/"; } ///////////////////////////////////////////////////////////////////////// @@ -145,38 +145,39 @@ public class LaTeXConfig extends writer2latex.base.ConfigBase { private static final int BIBTEX_STYLE = 32; private static final int EXTERNAL_BIBTEX_FILES = 33; private static final int ZOTERO_BIBTEX_FILES = 34; - private static final int NATBIB_OPTIONS = 35; - private static final int FORMATTING = 36; - private static final int PAGE_FORMATTING = 37; - private static final int OTHER_STYLES = 38; - private static final int IMAGE_CONTENT = 39; - private static final int TABLE_CONTENT = 40; - private static final int TABLE_FIRST_HEAD_STYLE = 41; - private static final int TABLE_HEAD_STYLE = 42; - private static final int TABLE_FOOT_STYLE = 43; - private static final int TABLE_LAST_FOOT_STYLE = 44; - private static final int IGNORE_HARD_PAGE_BREAKS = 45; - private static final int IGNORE_HARD_LINE_BREAKS = 46; - private static final int IGNORE_EMPTY_PARAGRAPHS = 47; - private static final int IGNORE_DOUBLE_SPACES = 48; - private static final int ALIGN_FRAMES = 49; - private static final int FLOAT_FIGURES = 50; - private static final int FLOAT_TABLES = 51; - private static final int FLOAT_OPTIONS = 52; - private static final int FIGURE_SEQUENCE_NAME = 53; - private static final int TABLE_SEQUENCE_NAME = 54; - private static final int IMAGE_OPTIONS = 55; - private static final int REMOVE_GRAPHICS_EXTENSION = 56; - private static final int ORIGINAL_IMAGE_SIZE = 57; - private static final int SIMPLE_TABLE_LIMIT = 58; - private static final int NOTES = 59; - private static final int METADATA = 60; - private static final int TABSTOP = 61; - private static final int WRAP_LINES_AFTER = 62; - private static final int SPLIT_LINKED_SECTIONS = 63; - private static final int SPLIT_TOPLEVEL_SECTIONS = 64; - private static final int SAVE_IMAGES_IN_SUBDIR = 65; - private static final int DEBUG = 66; + private static final int JABREF_BIBTEX_FILES = 35; + private static final int NATBIB_OPTIONS = 36; + private static final int FORMATTING = 37; + private static final int PAGE_FORMATTING = 38; + private static final int OTHER_STYLES = 39; + private static final int IMAGE_CONTENT = 40; + private static final int TABLE_CONTENT = 41; + private static final int TABLE_FIRST_HEAD_STYLE = 42; + private static final int TABLE_HEAD_STYLE = 43; + private static final int TABLE_FOOT_STYLE = 44; + private static final int TABLE_LAST_FOOT_STYLE = 45; + private static final int IGNORE_HARD_PAGE_BREAKS = 46; + private static final int IGNORE_HARD_LINE_BREAKS = 47; + private static final int IGNORE_EMPTY_PARAGRAPHS = 48; + private static final int IGNORE_DOUBLE_SPACES = 49; + private static final int ALIGN_FRAMES = 50; + private static final int FLOAT_FIGURES = 51; + private static final int FLOAT_TABLES = 52; + private static final int FLOAT_OPTIONS = 53; + private static final int FIGURE_SEQUENCE_NAME = 54; + private static final int TABLE_SEQUENCE_NAME = 55; + private static final int IMAGE_OPTIONS = 56; + private static final int REMOVE_GRAPHICS_EXTENSION = 57; + private static final int ORIGINAL_IMAGE_SIZE = 58; + private static final int SIMPLE_TABLE_LIMIT = 59; + private static final int NOTES = 60; + private static final int METADATA = 61; + private static final int TABSTOP = 62; + private static final int WRAP_LINES_AFTER = 63; + private static final int SPLIT_LINKED_SECTIONS = 64; + private static final int SPLIT_TOPLEVEL_SECTIONS = 65; + private static final int SAVE_IMAGES_IN_SUBDIR = 66; + private static final int DEBUG = 67; ///////////////////////////////////////////////////////////////////////// // IV. Our options data @@ -250,6 +251,7 @@ public class LaTeXConfig extends writer2latex.base.ConfigBase { options[BIBTEX_STYLE] = new Option("bibtex_style","plain"); options[EXTERNAL_BIBTEX_FILES] = new Option("external_bibtex_files",""); options[ZOTERO_BIBTEX_FILES] = new Option("zotero_bibtex_files",""); + options[JABREF_BIBTEX_FILES] = new Option("jabref_bibtex_files",""); options[NATBIB_OPTIONS] = new Option("natbib_options",""); options[FORMATTING] = new IntegerOption("formatting","convert_basic") { public void setString(String sValue) { @@ -661,6 +663,7 @@ public class LaTeXConfig extends writer2latex.base.ConfigBase { public String bibtexStyle() { return options[BIBTEX_STYLE].getString(); } public String externalBibtexFiles() { return options[EXTERNAL_BIBTEX_FILES].getString(); } public String zoteroBibtexFiles() { return options[ZOTERO_BIBTEX_FILES].getString(); } + public String jabrefBibtexFiles() { return options[JABREF_BIBTEX_FILES].getString(); } public String getNatbibOptions() { return options[NATBIB_OPTIONS].getString(); } // Formatting options diff --git a/source/java/writer2latex/latex/SectionConverter.java b/source/java/writer2latex/latex/SectionConverter.java index 064b0f1..124a77f 100644 --- a/source/java/writer2latex/latex/SectionConverter.java +++ b/source/java/writer2latex/latex/SectionConverter.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2010 by Henrik Just + * Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2010-10-06) + * Version 1.2 (2011-01-24) * */ @@ -121,6 +121,20 @@ public class SectionConverter extends ConverterHelper { return false; } } + + // Handle a section as a JabRef bibliography + private boolean handleJabRefBibliography(Element node, LaTeXDocumentPortion ldp, Context oc) { + String sName = node.getAttribute(XMLString.TEXT_NAME); + if (config.useBibtex() && config.jabrefBibtexFiles().length()>0 && sName.equals("JR_bib")) { + // This section is a JabRef bibliography, and the user wishes to handle it as such + // A JabRef bibliography is identified by the name JR_bib + // Use the BibTeX style and files given in the configuration + ldp.append("\\bibliographystyle{").append(config.bibtexStyle()).append("}").nl() + .append("\\bibliography{").append(config.jabrefBibtexFiles()).append("}").nl(); + return true; + } + return false; + } /**

    Process a section (text:section tag)

    * @param node The element containing the section @@ -167,8 +181,8 @@ public class SectionConverter extends ConverterHelper { if (sFileName!=null) { ldp.append("\\input{").append(sFileName).append("}").nl(); } - // Zotero might have generated this section as a bibliograhy: - if (!handleZoteroBibliography(node,sectionLdp,ic)) { + // Zotero or JabRef might have generated this section as a bibliograhy: + if (!handleZoteroBibliography(node,sectionLdp,ic) && !handleJabRefBibliography(node,sectionLdp,ic)) { palette.getBlockCv().traverseBlockText(node,sectionLdp,ic); } if (sectionLdp!=ldp) { sectionLdp.append("\\endinput").nl(); } diff --git a/source/java/writer2latex/latex/util/Context.java b/source/java/writer2latex/latex/util/Context.java index d498a6c..b3fa2e1 100644 --- a/source/java/writer2latex/latex/util/Context.java +++ b/source/java/writer2latex/latex/util/Context.java @@ -16,11 +16,11 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * - * Copyright: 2002-2010 by Henrik Just + * Copyright: 2002-2011 by Henrik Just * * All Rights Reserved. * - * Version 1.2 (2010-10-04) + * Version 1.2 (2011-01-24) * */ @@ -78,8 +78,8 @@ public class Context { // within a caption private boolean bInCaption = false; - // within a Zotero citation - private boolean bInZoteroText = false; + // within a Zotero/JabRef citation + private boolean bInZoteroJabRefText = false; // within a floating figure (figure environment) private boolean bInFigureFloat = false; @@ -194,9 +194,9 @@ public class Context { public boolean isInCaption() { return bInCaption; } - public void setInZoteroText(boolean bInZoteroText) { this.bInZoteroText = bInZoteroText; } + public void setInZoteroJabRefText(boolean bInZoteroJabRefText) { this.bInZoteroJabRefText = bInZoteroJabRefText; } - public boolean isInZoteroText() { return bInZoteroText; } + public boolean isInZoteroJabRefText() { return bInZoteroJabRefText; } public void setInFigureFloat(boolean bInFigureFloat) { this.bInFigureFloat = bInFigureFloat; } @@ -309,6 +309,7 @@ public class Context { newContext.setInContinuedList(bInContinuedList); newContext.setInSection(bInSection); newContext.setInCaption(bInCaption); + newContext.setInZoteroJabRefText(bInZoteroJabRefText); newContext.setInFigureFloat(bInFigureFloat); newContext.setInTableFloat(bInTableFloat); newContext.setInFrame(bInFrame); diff --git a/source/oxt/writer2latex/description.xml b/source/oxt/writer2latex/description.xml index 1e3329e..3b88e5c 100644 --- a/source/oxt/writer2latex/description.xml +++ b/source/oxt/writer2latex/description.xml @@ -5,7 +5,7 @@ - + diff --git a/source/oxt/writer2xhtml/Options.xcs b/source/oxt/writer2xhtml/Options.xcs index 5124492..75c7cfc 100644 --- a/source/oxt/writer2xhtml/Options.xcs +++ b/source/oxt/writer2xhtml/Options.xcs @@ -15,8 +15,9 @@ - + + diff --git a/source/oxt/writer2xhtml/description.xml b/source/oxt/writer2xhtml/description.xml index 1f8c566..f328c54 100644 --- a/source/oxt/writer2xhtml/description.xml +++ b/source/oxt/writer2xhtml/description.xml @@ -5,7 +5,7 @@ - + diff --git a/source/oxt/writer4latex/Options.xcs b/source/oxt/writer4latex/Options.xcs index 5f54a2d..31dcfc6 100644 --- a/source/oxt/writer4latex/Options.xcs +++ b/source/oxt/writer4latex/Options.xcs @@ -25,11 +25,11 @@ - - - - + + + + \ No newline at end of file diff --git a/source/oxt/writer4latex/Options.xcu b/source/oxt/writer4latex/Options.xcu index ca48d90..19189f1 100644 --- a/source/oxt/writer4latex/Options.xcu +++ b/source/oxt/writer4latex/Options.xcu @@ -87,19 +87,19 @@ + + false + false - - + + false - - false - - + diff --git a/source/oxt/writer4latex/W4LDialogs/Bibliography.xdl b/source/oxt/writer4latex/W4LDialogs/Bibliography.xdl index 2368434..24f049e 100644 --- a/source/oxt/writer4latex/W4LDialogs/Bibliography.xdl +++ b/source/oxt/writer4latex/W4LDialogs/Bibliography.xdl @@ -1,27 +1,23 @@ - + - - + - - - - - - - - - - + + + - - - - + + + + - + + + + + \ No newline at end of file diff --git a/source/oxt/writer4latex/description.xml b/source/oxt/writer4latex/description.xml index 933a9db..0e56167 100644 --- a/source/oxt/writer4latex/description.xml +++ b/source/oxt/writer4latex/description.xml @@ -4,7 +4,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> - + diff --git a/source/oxt/xhtml-config-sample/description.xml b/source/oxt/xhtml-config-sample/description.xml index af8e19e..a769646 100644 --- a/source/oxt/xhtml-config-sample/description.xml +++ b/source/oxt/xhtml-config-sample/description.xml @@ -2,5 +2,5 @@ - + diff --git a/source/readme-source.txt b/source/readme-source.txt index 9fa653e..fae5163 100644 --- a/source/readme-source.txt +++ b/source/readme-source.txt @@ -1,4 +1,4 @@ -Writer2LaTeX source version 1.1.9 +Writer2LaTeX source version 1.1.6 ================================= Writer2LaTeX is (c) 2002-2011 by Henrik Just.