[texworks] JabRef Bibtex and php MySql insert \cite[]{}

Paul A Norman paul.a.norman at gmail.com
Fri Jul 16 13:25:47 CEST 2010


Here is a more robust  -  insertCitation.js

// TeXworksScript
// Title: \cite from JabRef -> MySql
// Description: Make other Scripts
// Author: Paul A. Norman
// Version: 0.3
// Date: 2010-07-16
// Script-Type: standalone
// Context: TeXDocument
// Shortcut: Alt+B, Alt+C


var citationType = ["[1. page 2-3]", "Goossens et al.
(1993)","(Goossens et al., 1993)","Goossens, Mittlebach, and Samarin
(1993)","(Goossens, Mittlebach, and Samarin, 1993)", "Jones et
al.","Jones, Baker, and Williams","1990","(1990)"];

var insertCite = [ "cite", "citet", "citep", "citet*", "citep*",
"citeauthor", "citeauthor*", "citeyear", "citeyearpar"];

var phpScript = __FILE__.substr(0,__FILE__.lastIndexOf("/") +1) +
'getCiteKeys.php';

// Non-windows OSes won't need the cmd /c
   var citeKeys = TW.app.system('cmd /c php ' + phpScript).split("\n");

var chosenCitation = TW.getItem( null, "Insert Citation", "Please
Choose A Citation Key: ", citeKeys , 0, true ) ;

  if (chosenCitation != undefined)
  {

            var pageRange = TW.getText( null, "Page Range", "Please
enter A Page Range etc.\n\nE.g.>  123-127", "");
            if (pageRange == undefined)
            {
              pageRange = "";
              }
            else
            {
              pageRange = '[P.~'+ pageRange + ']';
              }

          var citeTypeChosen = TW.getItem( null, "Citation Style",
"(In Preamble, Place: \\usepackage{natbib})\n\n\nChoose A Citation
Type: ",
                                  citationType , 0, true ) ;

        if (citeTypeChosen != undefined)
        {
            for (find =0; find < citationType.length; find++)
            {
             if (citationType[find] == citeTypeChosen)
             {
                     citeType = insertCite[find];
                     break;
                     }
              }

TW.target.insertText('\\'+citeType+pageRange+'{'+chosenCitation+'}');
                     }// /End. IF  citeType != undefined
                          } // /End. IF chosenCitation != undefined
                                null;

   // Thanks to http://www.andy-roberts.net/misc/latex/latextutorial3.html
   // Thanks to
http://www.ctan.org/tex-archive/macros/latex/contrib/natbib/natbib.pdf



On 16 July 2010 18:50, Paul A Norman <paul.a.norman at gmail.com> wrote:
> Hi all,
>
> Here is a thing of interest, that others might adapt and use.
>
> If you use JabRef ( http://jabref.sourceforge.net/ )  to maintain your
> biblios, and have MySql and php (CLI)  then here is a system I
> personally use.
>
> JabRef lets me set up an MySql database very simply.
>
>  (i)  Just use your MySql management tool of choice, and make a
> database called jabref (no tables neeeded)
>  (ii)  In Jab Ref open your biblio
> (iii)  File/Connect to External SQL database
> (iv)  File/Export to External Database
>
> (I use this with then a latter JabRef  File/ Import From External
> Database to mainatain my references through other interfaces as well.)
>
> With that done,  you can use these twoi scripts, one a Qt TwScript,
> the other a php script stored in the same directory under your Tw
> Scripts folder.
>
> And the normal sort of thing (don't forget to run BibTex in Tw after
> your first pdflatex and then two more pdflatex(s)
>
> \bibliographystyle{unsrt}
> \bibliography{../../bibliographies/myBiblio}
>
> Hope it helps/inspires someone,
>
> Paul
>
> Script One  - php called -    getCiteKeys.php
>
> <?php
> // Connecting, selecting database
> $link = mysql_connect('localhost', 'root', '')
>   or die('Could not connect: ' . mysql_error());
> // echo 'Connected successfully';
> mysql_select_db('jabref') or die('Could not select database');
>
> // Performing SQL query
> $query = 'SELECT cite_key FROM entries';
> $result = mysql_query($query) or die('Query failed: ' . mysql_error());
>
>  $build = "";
>
> while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
>
>   foreach ($line as $col_value) {
>      $build .=  $col_value .  "\n";
>   }
> }
>
> // Free resultset
> mysql_free_result($result);
> // Closing connection
> mysql_close($link);
>
> echo $build;
> ?>
>
> And now a Qt TwScript I use as -       insertCitation.js
>
> //TeXworksScript
> //Title: \cite from JabRef -> MySql
> //Description: Make other Scripts
> //Author: Paul A. Norman
> //Version: 0.3
> //Date: 2010-16-07
> //Script-Type: standalone
> //Context: TeXDocument
> //Shortcut: Alt+B, Alt+C
>
> var phpScript = __FILE__.substr(0,__FILE__.lastIndexOf("/") +1) +
> 'getCiteKeys.php';
>
> // Non-windows OS-es won't need the cmd /c
> var citeKeys = TW.app.system('cmd /c php ' + phpScript).split("\n");
>
> var chosenCitation = TW.getItem( null, "Insert Citation", "Please
> Choose A Citation Key: ", citeKeys , 0, true ) ;
>
>  if (chosenCitation != undefined)
>         {
>
>            var pageRange = TW.getText( null, "Page Range", "Please enter A
> Page Range etc.\n\nE.g.>  123-127", "");
>                   if (pageRange == undefined)
>                             {
>                                      pageRange = "";
>                                }
>                                else
>                               {
>                               pageRange = '[P.~'+ pageRange + ']';
>                               }
>
>                 TW.target.insertText('\\cite'+pageRange+'{'+chosenCitation+'}');
>
>                } // /End. IF chosenCitation != undefined
> null;
>



More information about the texworks mailing list