Sunday, December 27, 2009
35 Google open-source projects that you probably don't know
Update:
Currently list is longer than 35 projects, during change from Polish to English I have added one new project - and this is why title says 35 instead 34 ;). After updates there are even more! Sorry for your confusion.
Google is one of the biggest companies supporting OpenSource movement, they released more than 500 open source projects(most of them are samples showing how to use their API). In this article I will try to write about most interesting and free releases from Google, some of them might be abandoned.Update:
List of projects developed at Google and released as opensource (thanks @dobs from reddit) can be displayed also here
Text File processing
- Google CRUSH (Custom Reporting Utilities for SHell)
- CRUSH is a collection of tools for processing delimited-text data from the command line or in shell scripts. Tutorial how to use it is here
C++ libraries and sources
- Google Breakpad
- An open-source multi-platform crash reporting system. Breakpad is a minidump-generation library used for snapshotting processes out in the field for later analysis. The format is similar to core files but was developed by Microsoft for it's crash-uploading facility. A minidump-creation library for Mac/Linux has been implemented so that the crash-processing back-end only needs to understand one format.
- Google GFlags
- The gflags package contains a library that implements commandline flags processing. As such it's a replacement for
getopt()
. It has increased flexibility, including built-in support for C++ types likestring
. Here is introduction how to use it. - Google Glog
- The glog library implements application-level logging. This library provides logging APIs based on C++-style streams and various helper macros. It can be used under Linux, BSD, and Windows. Here is introduction how to use Glog.
- Google PerfTools
- These tools are for use by developers so that they can create more robust applications. Especially of use to those developing multi-threaded applications in C++ with templates. Includes TCMalloc, heap-checker, heap-profiler and cpu-profiler. Instructions how to use PerfTools can be found here and here.
- Google Sparse Hash
- An extremely memory-efficient hash_map implementation. 2 bits/entry overhead. The SparseHash library contains several hash-map implementations, including implementations that optimize for space or speed. The Google sparsehash package consists of two hashtable implementations: sparse, which is designed to be very space efficient, and dense, which is designed to be very time efficient. For each one, the package provides both a hash-map and a hash-set, to mirror the classes in the common STL implementation. Docs are here.
- Omaha - Google Update
- Omaha, otherwise known as Google Update, is a program to install requested software and keep it up to date. So far, Omaha supports many Google products for Windows, including Google Chrome and Google Earth, but there is no reason for it to only support Google products. Here is Omaha Overview and Developers Setup Guide.
- Protocol Buffers
- Protocol Buffers are a way of encoding structured data in an efficient yet extensible format. Google uses Protocol Buffers for almost all of its internal RPC protocols and file formats. Here is developer guide, this protocol can be used in many languages and it is suported by few IDE - for example NetBeans
- Google Code Prettify
- A Javascript module and CSS file that allows syntax highlighting of source code snippets in an html page. It supports: C/C++, Java, Python, Ruby, PHP, VisualBasic, AWK, Bash, SQL, HTML, XML, CSS, JavaScript, Makefiles and some Perl. Not supported: Smalltalk and all *CAML*. For example click here
- SpriteMe - easy "CSS sprites"
- SpriteMe makes it easy to create CSS sprites (connect many small images to one larger to reduce new connections to webserver when loading webpage). This projects is also available as service under: http://spriteme.org/.
- Redacisaurus
- Reducisaurus is a web service for minifying and serving CSS and JS files. Reducisaurus is based on YUI Compressor and runs on AppEngine.
- JaikuEngine
- JaikuEngine is a social microblogging platform that runs on AppEngine. JaikuEngine powers Jaiku.com. For the mobile client source, see: Jaiku Mobile client. Here is README for project
- Selector Shell
- The Selector Shell is a browser-based tool for testing what CSS becomes in different browsers. It works by taking some raw text, inserting a dynamic STYLE element into the HEAD with that raw text as its content, and then reading the CSSOM to see what the browser has parsed it into. It is written in Javascript. It can be tested here.
- Google Feed Server
- Google Feed Server is an open source Atom Publishing Protocol server based on the Apache Abdera framework. Google Feed Server provides a simple back end for data adapters, which allows developers to quickly deploy a feed for an existing data source such as a database. Google Feed Server also provides the Feed Server Client Tool (FSCT), which lets developers perform create, receive, update, and delete (CRUD) operations on a Feed Server feed. Here are links to start it up and get running.
- Melange, the Spice of Creation
- The goal of this project is to create a framework for representing Open Source contribution workflows, such as the existing Google Summer of Code TM (GSoC) program. Using this framework, it will be possible to host future Google Summer of Code programs (and other similar programs, such as the Google Highly Open Participation TM Contest, or GHOP) on Google App Engine. Here you can checkout Getting Started Guide
- NameBench
- This project hunts down the fastest DNS servers available for your computer to use. namebench runs a fair and thorough benchmark using your web browser history, tcpdump output, or standardized datasets in order to provide an individualized recommendation. namebench is completely free and does not modify your system in any way. This project began as a 20% project at Google. namebench runs on Mac OS X, Windows, and UNIX, and is available with a graphical user interface as well as a command-line interface. BTW: Google has own free public caching DNS servers at ip: 8.8.8.8 i 8.8.4.4.
- Rat Proxy
- A semi-automated, largely passive web application security audit tool, optimized for an accurate and sensitive detection, and automatic annotation, of potential problems and security-relevant design patterns based on the observation of existing, user-initiated traffic in complex web 2.0 environments. It detects and prioritizes broad classes of security problems, such as dynamic cross-site trust model considerations, script inclusion issues, content serving problems, insufficient XSRF and XSS defenses, and much more. Docs are here. Project is written and maintained by Michał Zalewski (lcamtuf).
- TopDraw
- Top Draw is an image generation program. By using simple text scripts, based on the JavaScript programming language, Top Draw can create surprisingly complex and interesting images. The cool part is that the program has built in support for taking your image and installing it as your desktop image. There's even a Viewer application that can be installed in the menubar to automatically run with the parameters (such as the selected script, update interval) that you've specified. The projects is developed in XCode, and runs on:
Mac OS X 10.5 (Leopard) or later.
- etherpad
- Open source release of EtherPad, a web-based realtime collaborative document editor. This project exists mainly as an exhibition of the code, to help support those who want to run or modify their own etherpad servers, or for those who are curious about how etherpad's algorithms make realtime collaboration possible. Here are some instructions how to build etherpad, and screencast what is all about. Etherpad uses JavaScript, Java and Comet server for make real time collaboration make working.
- Chromium
- Chromium is the open-source project behind Google Chrome. Chromoium project is about create a powerful platform for developing a new generation of web applications. There are not so many differences between Chrome and Chromium. Here are instructions how to build Chromium on Linux. Tere are also official releases of Chrome for Windows, Mac and Linux.
- V8 Google's open source JavaScript engine
- V8 is Google's open source JavaScript engine. V8 is written in C++ and is used in Google Chrome, the open source browser from Google. V8 implements ECMAScript as specified in ECMA-262, 3rd edition, and runs on Windows XP and Vista, Mac OS X 10.5 (Leopard), and Linux systems that use IA-32 or ARM processors. V8 can run standalone, or can be embedded into any C++ application, here are some helpfull docs how to begin.
- Chromium OS
- Chromium OS is an open-source project that aims to build an operating system that provides a fast, simple, and more secure computing experience for people who spend most of their time on the web. Sources are available on: http://git.chromium.org/ src
- Android
- Android is the first free, open source, and fully customizable mobile platform. Android offers a full stack: an operating system, middleware, and key mobile applications. It also contains a rich set of APIs that allows third-party developers to develop great applications.
The Internet
Tools for MySQL
- Google MySQL Tools
- Various tools for managing, maintaining, and improving the performance of MySQL databases, originally written by Google. This includes:
- mypgrep.py - a tool, similar to pgrep, for managing mysql connections
- compact_innodb.py - compacts innodb datafiles by dumping and reloading all tables
- Google mMAIM
- mMAIM's purpose is to make it easy to monitor and analyze MySQL servers and to easily integrate itself into any environment. It can show Master/Slave sync stats, some efficiency stats, can return statistics from most of the "show" command, and more!
Other projects
- Stressful Application Test (stressapptest)
- Stressful Application Test (or stressapptest, its unix name) tries to maximize randomized traffic to memory from processor and I/O, with the intent of creating a realistic high load situation in order to test the existing hardware devices in a computer. It has been used at Google for some time and now it is available under the apache 2.0 license. Here are some docs: Introduction, Installation Guide and User Guide
- Pop and IMAP Troubleshooter
- The POP and IMAP troubleshooter serves to diagnose and solve connection problems from client machines to email services. It reads the client configuration files (Outlook, Windows Mail, Thunderbird, etc.), checks the individual settings, and then attempts to create POP, IMAP, and SMTP connections using these settings. The troubleshooter is coded in C++ using the Qt environment. It can be used generically, or can be customized for the demands of a particular email service.
- OpenDuckBill
- Openduckbill is a simple command line backup tool for Linux, which is capable of monitoring the files/directories marked for backups for any changes and transferring these changes either to a local backup directory or a remote NFS exported partition or to a remote ssh server using the very common, rsync command. Here is installation guide.
- ZXing
- ZXing (pronounced "zebra crossing") is an open-source, multi-format 1D/2D barcode image processing library implemented in Java. Our focus is on using the built-in camera on mobile phones to photograph and decode barcodes on the device, without communicating with a server. As far I know it can be found on Android Platform. Checkout Getting stared guide, and chackout list of supported devices (My SonyEricson device is capable!).
- Tesseract OCR Engine
- The Tesseract OCR engine was one of the top 3 engines in the 1995 UNLV Accuracy test. Between 1995 and 2006 it had little work done on it, but it is probably one of the most accurate open source OCR engines available. The source code will read a binary, grey or color image and output text. A tiff reader is built in that will read uncompressed TIFF images, or libtiff can be added to read compressed images. Here is: Readme and FAQ
- Neatx - Open Source NX server
- Neatx is an Open Source NX server, similar to the commercial NX server from NoMachine. For more information checkout Project Homeppage. NX protocol is way more roboust than VNC (it can be usefull when having slow Internet connection). Major differences between NX and VNC:
- NX is X11 client it doesn't send bitmaps
- NX works with X, VNC and Remote Desktop (Windows)
- NX buffers data
- NX is easy to install (link in Polish)
- PSVM
- It is the code of the following paper: http://books.nips.cc/papers/files/nips20/NIPS2007_0435.pdf. This is an all-kernel-support version of SVM, which can parallel run on multiple machines. Here is usage.
- The GO programming language
- New programming language developed in Google. It is released using this slogan: "GO a systems programming language expressive, concurrent, garbage-collected"
- The Google Collections Library for Java
- The Google Collections Library is a set of new collection types, implementations and related goodness for Java 5 and higher, brought to you by Google. It is a natural extension of the Java Collections Framework you already know and use.
- Google styleguide
- Every major open-source project has its own style guide: a set of conventions (sometimes arbitrary) about how to write code for that project. It is much easier to understand a large codebase when all the code in it is in a consistent style. "Style" covers a lot of ground, from “use camelCase for variable names” to “never use global variables” to “never use exceptions.” This project holds the style guidelines we use for Google code. If you are modifying a project that originated at Google, you may be pointed to this page to see the style guides that apply to that project. This is worth reading.
Summary
Google is one of the most active companies releasing open source software, on top of that Google 5 times organized Summer Of Code - project where students from all over the world start working for OpenSource and Google pays them scholarship for few months of hard work.Update
- Guice a lightweight dependency injection framework for Java 5 and above
- Thanks JavaBeat for summary.Google Guice is a Dependency Injection Framework that can be used by Applications where Relation-ship/Dependency between Business Objects have to be maintained manually in the Application code. Since Guice support Java 5.0, it takes the benefit of Generics and Annotations thereby making the code type-safe.Documentation is here: Getting stared guide
- Google Sitebrics - web framework powered by Guice
- Sitebricks is a simple development layer for web applications built on top of Google Guice. Sitebricks focuses on early error detection, low-footprint code, and fast development. Like Guice, it also balances idiomatic Java with an emphasis on concise code. Here is Getting Started guide and 5 minute tutorial.
- Google ctemplate
- CTemplate is a simple but powerful template language for C++. It emphasizes separating logic from presentation: it is impossible to embed application logic in this template language. Here is some documentation.
Thanks nostrademons from reddit.com - Google C++ Mocking Framework
- This project was inspired by jMock, EasyMock, and Hamcrest, and designed with C++'s specifics in mind, Google C++ Mocking Framework (or Google Mock for short) is a library for writing and using C++ mock classes. Google Mock:
- lets you create mock classes trivially using simple macros,
- supports a rich set of matchers and actions,
- handles unordered, partially ordered, or completely ordered expectations,
- is extensible by users, and
- works on Linux, Mac OS X, Windows, Windows Mobile, minGW, and Symbian.
Thanks richq from reddit.com - Google C++ Testing Framework
- Google's framework for writing C++ tests on a variety of platforms (Linux, Mac OS X, Windows, Cygwin, Windows CE, and Symbian). Based on the xUnit architecture. Supports automatic test discovery, a rich set of assertions, user-defined assertions, death tests, fatal and non-fatal failures, value- and type-parameterized tests, various options for running the tests, and XML test report generation. Here is Google Test Primer and here is Google Test Dev Guide.
Thanks richq from reddit.com - Google Toolbox for Mac
- Is collection of source code from different Google projects, that may be useful to developers working on Macintosh. This package includes the Google Developer Spotlight Importers. The release notes can be found here.
Thanks buffi from reddit.com - OCRopus
- This is not entirely Google Project but it is donated by Google. OCRopus(tm) is a state-of-the-art document analysis and OCR system, featuring pluggable layout analysis, pluggable character recognition, statistical natural language modelling, and multi-lingual capabilities. The OCRopus engine is based on two research projects: a high-performance handwriting recognizer developed in the mid-90's and deployed by the US Census bureau, and novel high-performance layout analysis methods. OCRopus is development is sponsored by Google and is initially intended for high-throughput, high-volume document conversion efforts. We expect that it will also be an excellent OCR system for many other applications. Here is usage guide and guide how to install development version
Thanks 13xforever from from reddit.com
Labels: Google, Open Source
Monday, December 14, 2009
Top 15 Open Source and/or free apps for scientists and students
1. Type-setting and office
- OpenOffice
Is a complete Office suite package including Writer, Presentation, Spreadsheet, Drawing, and Database applications. It is well suited to academic applications. The features of particular importance are built-in bibliography utility, possibility to export the Text files as LaTeX, BibTeX, MediaWiki, and XHtml, built-in pdf export capability, and good document formatting.
-LaTeX and MikTeX (for Windows)
LaTeX is a powerful mark-up language for writing papers, scientific reports, theses, and so on. It is based on the TeX system originally developed by Donald E. Knuth. LaTeX is super-powerful in writing and managing any sort of academic writing. As a mark-up language, it can be called a programming language for academic writing. Like many programming systems any LaTeX typesetting system should have a compiling component and an editor. Although normal plain text editors can be used for LaTeX typesetting, specialized LaTeX editors are also available. Most Linux distributions come with some sort of TeX system. MikTeX can be used for Windows. There is a huge ecosystem around LaTex and many things related o TeX can be freely downloaded from Comprehensive TeX Archive Network (CTAN).
- Kile
Kile is an Integrated Development Environment (IDE) for development of LaTex documents in Linux. It is based on KDE desktop environment. For screenshots of Kile see here.
-TeXnixCenter
A feature-rich LaTeX editor for Windows freely available under GPL license.
2. Bibliography and reference management
- Bibus
Bibus is a bibliography and citation management software designed to be Open Source, free, and integrative to OpenOffice and MS Word. Bibus is available for Linux and Windows but Mac support is limited at the moment. It can be downloaded from here. Bibus can import and export from EndNote/Reference Manager and also RIS files. For screenshots of Bibus check this link.
- Jabref
It has LaTeX bibliography files (BibTeX files) as its native file format and can be used for management, manipulation, and export of BibTex files. Jabref is maintained for Linux, Windows, and Mac OS X. It can directly search and download from some bibliographic databases. Screenshots can be accessed here.
- Zotero
Zotero is a Firefox browser extension which can be used for storing bibliographic data while browsing. It can be used for managing and citing as well and can save a lot of time particularly the time spent for collection of data. It works with many websites. Read this nice article about how to use Zotero to manage OpenOffice bibliographies.
- There are more Open Source bibliographic management softwares than these three. Read this Wikipedia article about comparison of different proprietary and Open Source reference management softwares.
3. PDF and Postscript related apps
- PDFedit
PDFedit is a great free and Open Source pdf editor for Linux. Read my previous post about editing pdf files with Linux to find more about PDFedit.
- Ghostscript
Ghostscript is an application written mainly in C for viewing ps and pdf files, converting ps files to pdf, and much more. This is available for Linux, Windows, and Mac OS X.
- PDFCreator
It is a free and Open Source pdf creation application based on Ghostscript. This is available only for MS Windows but Vista is not currently well supported. However, the Vista bug is being fixed. PDFCreator was selected by the OpenCD project for creation of pdf files in Windows.
- Wanna more pdf apps (Open Source and proprietary) ? Check this link.
4. Math and computing
- Scilab
Scilab is a free and Open Source technical computing language. It’s syntax and application is very similar to MATLAB and if you already know MATLAB you wouldn’t have much difficulty switching to Scilab. It comes with a number of toolboxes and new applications can be easily added as interfacing with Fortran, Tcl/Tk, C, C++, Java, LabVIEW is possible. Downloadable binaries are available for Linux, Windows, and Mac OS X.
- SciPy
SciPy and NumPy are two scientific computing and numerical analysis packages based on Python. NumPy provides the basic computational capabilities and SciPy is built on top of NumPy to provide a wider range of capabilities. For screenshots of the package see this and this pages.
- SAGE
SAGE is an Open Source mathematics application which is based on Python. Since SAGE is based on Python, the mathematical capabilities of SAGE can be combined by other general capabilities of Python to make more useful things. Interfacing with a number of non-free packages (such as Magma, Maple, Mathematica, MATLAB, and MuPAD) as well as free packages (such as Axiom, GAP, GP/PARI, Macaulay2, Maxima, Octave, and Singular) is possible. Here you can try SAGE online. SAGE can be integrated with some web browsers.
- Octave
GNU Octave is a high-level computational language which is similar to and mostly compatible with MATLAB. It is licensed under GPL license and is available for different platforms.
- Many other technical and scientific computing languages are also available. For other free and non-free alternatives see here, here and here.
5. Graphics and illustration making
- The GIMPThe GNU Image Manipulation Program (GIMP) is an application for photo retouching and manipulating which is similar to non-free software Photoshop. It is available for many platforms including Linux and Windows. In Ubuntu Linux, GIMP is installed by default.
- Inkscape
Inkscape is a free and Open Source vector image editor. It is similar to non-free software Adobe Illustrator which is being widely used also by scholars to make scientific and educational illustrations. It has many advanced capabilities and is getting even better very rapidly.
Labels: Open Source
How to use JabRef (BibTeX) with Microsoft Word 2003
March 25th, 2007 by James
JabRef is one of the best reference managers available and provides a realistic alternative to Endnote, as well as being open-source & free. Unfortunately most users are not aware that JabRef (or any other BibTeX based reference manager) can easily be integrated for use with Microsoft Word. In this guide I will show you step-by-step how to install Mike Brookes‘ excellent free Bibtex4Word (v1.12) Word Macro Package on your Windows XP machine.This post is for an old version of the BibTeX4Word Macro. The newest version can be found here on Mike Brookes’ site, along with excellent documentation.
These instructions assume that you are already familiar with JabRef and have a copy installed on your computer. If you wish you can download JabRef from here. I will cover how to use JabRef in a forthcoming guide.
1. Download MiKTeX
MiKTex is a LaTeX typesetting environment , you don’t need to be too concerned about the details of this, essentially MiKTeX contains BibTeX the ‘engine’ that is used for to generate the different referencing styles that you will now be able to call on to be able to submit to various journals eg. Harvard, Vancouver, Nature etc.
The link to MikTeX is here (and will open in a new window) You need to download and install the basic version, don’t worry about installing all the packages, you don’t need them.
2. Relocate your JabRef data File
Unfortunately BibTeX does not support filenames with spaces in them, if you have spaces in your path to your JabRef file you must relocate your data file to a directory without. My Bibliography file is called “bib.bib” and was located in “My Documents” which contains a space so I relocated it to a new folder “c:\References\bib.bib” Make a note of your location.
3.Set your Path
The macro requires that it can access the BibTeX package from the default path. The simplest way to set this is to go to
Start>>Settings>>Control Panel>> System>>Advanced>>Enviromental Variables>>System Variables
here you need to edit the “Path” entry by adding the path of the BibTeX executable, failure to do so will cause an “Error 53″ The path to my BibTeX executable is
C:\Program Files\MiKTeX 2.5\miktex\bin
Yours should be similar if you followed the default installation. If you are having problems use the Windows search feature to look for “Bibtex.exe”. Remember each entry on the path should be seperated by semi-colons for example my path is:-
d:\WINDOWS\system32;D:\WINDOWS;D:\Program Files\MiKTeX 2.5\miktex\bin;
4. Make Word Startup Folder Visible
By defaut on your machine you may have to make your Word startup folder visible, you can do this by going to Windows Explorer and selecting:-
Tools>>Folder Options>>Hidden files and folders>>Show hidden files and folders & Display the contents of system folders.
If you prefer not to see your system and hidden folders you can reverse this once complete.
5.Download the Macro
This can be found on Mike Brookes’ site here. Right click this link and use the “Save target as” or “Save Link as” option. You need to save it in your MS Word Startup folder which can be found at:-
C:\Documents and Settings\James\Application Data\Microsoft\Word\STARTUP
of course you will have substitute your username for mine, and possibly change the drive letter according to the setup of your machine. If you want this macro to be available to more than one user you will have to do this for each user. There is no need to change the MS Word security settings to enable this macro to work correctly.
6. Load Microsoft Word
Hopefully you will see this new toolbar. First you need to let the BibTeX4Word macro know where you keep your bibliography data file. You do this by clicking on the last but one icon (the open folder) and then finding the bibliography file which you made a note of earlier.
7.Start Citing
To add a citation position the cursor at the point you wish to insert the citation and click the [+] button, you can either type the BibTeX key directly eg “Davies2003″ or search for author’s papers from your bibliography by the surname by prefixing with A: eg “A:Davies”. You can cite more than one paper by just separating the keys by commas.
8.Creating your Bibliography List
When you are ready to create your bibliography, simply place your cursor where you wish it to appear and click the second icon from the left on the BibTex4Word toolbar. This will produce the bibliography and automatically change the bibliography keys to reference numbers. You can flip between the two with the [eye] key on the toolbar.
9.Changing the Citation Styles
This can be done by clicking the paintbrush logo. To find out what styles are available from your MikTeX installation you can search the BibTeX folder for style files which have the *.bst extension, or create your own as described in Mark’s recent article
Example Citation Styles
A selection of the more popular styles (Plain, Vancouver, AuthorDate and it’s variations) can be found in this pdf or this MS Word file.
Adding more Styles to BibTeX
If you installed the Basic MiKTeX package you will only have a small selection of styles. Not all BibTeX styles work well with the BibTeX4Word Macro, but most do. To add more go to
Start>>Programs>>MiKTeX 2.5>>MiKTeX Package Manger
Here you need to select all of the Category entitled “\BibTeX\BibTeX packages” then right click and select Install, and the latest versions will be downloaded and installed on your computer.
Customising Your Bibliography
You can format your bibliography directly, for example making citation numbers appear as subscript. If you wish you can change the citation brackets from square to round brackets, this is done using MS Word’s search and replace, though this is best left until you have finished your paper or thesis.
Labels: bibliography, BibTex, JabRef
JabRef vs Zotero with Word Processor
I have talked about JabRef and Zotero here several times, especially the latter. However, it’s JabRef which I use for my work. Zotero is quite handy to collection the references but its file format is not a native BibTex file that I can use directly with LaTeX. The BibTeX file exported by Zotero still has some bug (see many discussions on this topic in Zotero’s forum). Therefore, I have disabled its ability to download RIS/Refer files, and use it mostly for general topics (including physics).
Recently, when I wrote the report in MS Word (sometimes I still use that), I thought, why not try Zotero’s Word plugin to insert the citations (or OpenOffice.org Writer, if you prefer)? Well, I only tried for 10+ min and went back to my old way since I had a deadline.
Today, I finally had time to check Zotero’s plugin and JabRef’s customer export filter. The short answer is that JabRef works better for me but Zotero has its own advantages. First, let me show you my old way of putting references in a Word or OOo Writer document, and then outline each method.
The basic in-text citation I used is similar to the basic one for Chicago Manual of Style (CMS) or APA (American Psychological Association) style, but is adopted from the bibtex key: 1st Author’s last name + year of publication, e.g. Einstein1905. In this way, it’s just like writing it in LaTeX file without the \cite command. The style for bibliographies in the end usually follows the style for Physical Review journals. Before this report, I manually typed them or copied them into text from the pdf file produced by LaTeX + BibTeX. Even with the copied text, I still needed to apply the style (bold or italic font) manually. That’s tedious if you have many bibliography entries to modify.
Here are improved methods to make inserting citations easier in MS Word or OOo Writer.
Method 1: Zotero’s plugin
- Go to Add-on (in Word) Click at
(insert citation) to choose which one to insert (single or multiple entries). Click at “Show Editor” can let you edit the in-text citation format before putting it into the document.
- Click at
to generate a bibliography of all items you just cited.
Thoughts:
If using JabRef’s database, first select entries you’d cite and save them into another database (.bib). Open it in any editor and remove the header (two lines starting with #) and the comment lines in the bottom. Then import them into Zotero, which will be placed in a new folder automatically.
I got some problem when I tried to edit the bibliography to remove unwanted information (e.g url) appearing in the bibliography. An error message showed up, saying “Run-time error ‘91′: Object variable or with block variable not set”. Consulted in Zotero forum but still couldn’t know what the problem was (very persistent).
I gave up and then went to try JabRef. Later (after installing the latest version 1.0.2 and its plugin — released today!), mysteriously I no longer encountered these problems. For instance, when I switched to a different style (Natural Journal), the unwanted url information disappeared, which didn’t come back even after I switched back to CMS.
Anyway, without this run-time error, Zotero does work very efficiently in Word (supposedly OOo Writer too). You may need to manually edit the bibliography information for some entries if the citation is exported from BibTeX format. The good thing is that it can automatically react according to the changes of the style and adding/removing the bibliography entries (need to click
to update the references). However, Zotero still cannot now can compress the in-text citation numbers, e.g. 1–3, which is a piece of cake for like what LaTeX + BibTeX (with the natbib package) do.
For people who mostly use word processor for writing, Zotero is your best tool, especially that it’s now more mature than the previous versions.
(see also Zotero Extension for MS Word and OpenOffice and New Screencast of Zotero plugin for Word)
[03/17/2009] Update: Ever since, Zotero has improved quite a lot. Check out this recent post, “Try out New Features in Zotero 1.5 Beta“.
Method 2: JabRef custom export filter
- Write the BibTeX key as the in-text citation manually or copy it from JabRef (right click at an entry and select “Copy BibTeX key (I wish there’s a hot key for this)
- Export the selected bibliography entries into a RTF file using your custom export filter. Copy the whole bibliography into the right place of your document.
Thoughts:
The first thing is to create the custom export filter following the bibliography style you prefer. I used the example based on Organization Science’s style from here and tweaked the style close to the one for Reviews of Modern Physics. To add a new export filter:
- Unzip all the files in some directory
- In JabRef/Options/Manage custom exports, add a new one by giving the export name, the file position (the main file, xxx.layout), and the file extension (.rtf)
Tweaking the style takes some trials since I don’t know the markup language used here, but it’s not difficult when you have an example to start with. JabRef provides some commands to replace TeX-specified characters, e.g. {\a} or {\”{o}}, with their HTML or XML presentations (still has some bug when exporting to RTF).
Once the custom export filter is set up, using JabRef with any word processor is very convenient, as long as you use author + year for the in-text citation format. It’s good for people who use LaTeX and BibTeX mostly for their works but occasionally need to work on any word processor.
Wait, JabRef can do more.
Method 3: JabRef default export filter
Another easy way is to export your JabRef database (or selected entries) into MS Word 2007 (XML) format. Then use the built-in citation tool in Word. For OOo Writer users, check out this help docuement. I didn’t go through this method, so I’m not sure if there’s a bug or not.
Anyway, JabRef is a nice tool, not just for the LaTeX + BibTeX users.
(see also JabRef HTML Export Filter)
Related Articles:
- Useful Tools Not Just for Students
- Citation Style for Research Papers
- Choosing a BibTeX Style – explain the standard styles and styles it recommends.
PS: MS Office Word Team posted this article on their blog, “Bibliography & Citation 1011“. Even though the bibliography tool in Word 2007 has been improved , it is still not a good tool to manage your bibliographies (“Manage Sources” under Reference ribbon). Choose either JabRef or Zotero instead.
Labels: bibliography, BibTex, JabRef, Zotero