SVN externals

Let <url> be the URL of your SVN server and <rep> be the path of your repository. In my case, it would be <url>=https://tait.e-technik.uni-ulm.de and <rep>=/svn/senger.

Create a directory <url><rep>/libs and add a library mylib_v1 to it, i.e., the contents of the library are located in <url><rep>/libs/mylib_v1. The library could be pgf, pgfplots, algorithm2e, beamer, etc.

Go to the SVN working directory where you want the library to be located and issue svn propedit svn:externals . (note the trailing dot). An editor window comes up. Add a row mylib <url><rep>/libs/mylib_v1.

After svn commit and svn update, you will have the library mylib_v1 within the directory mylib without having created a copy of mylib_v1 on the SVN server. In case you want to upgrade to mylib_v2 later, just add it as a new directory <url><rep>/libs/mylib_v2, go to the SVN working directory, issue svn propedit svn:externals again and change the mylib row into mylib <url><rep>/libs/mylib_v2.

Using SVN externals, you can arbitrarily switch between different versions of libraries without creating multiple instances of each library on the SVN server. The technique is even more powerful, since libraries can be located in other people's repositories and even on remote servers.

Note for internal users: Some LaTeX packages can be found below tait.e-technik.uni-ulm.de/svn/senger/libs, it is safe to use them for own projects. The location might later be changed to somewhere below tait.e-technik.uni-ulm.de/svn/tait, requiring one call of svn propedit svn:externals.

SVN tags

Let <url> be the URL of your SVN server and <rep> be the path of your repository. In my case, it would be <url>=http://tait.e-technik.uni-ulm.de and <rep>=/svn/senger.

In preparation of having SVN tags, have a tags and a trunk directory at the highest level of each project, i.e., <url><rep>/project/trunk and <url><rep>/project/tags. All the work is then done below <url><rep>/project/trunk. If there is a reason for creating a tag (e.g. submitting a paper), issue svn copy <url><rep>/project/trunk <url><rep>/project/tags/submitted in order to obtain a snapshot of trunk below tags/submitted. This procedure does not waste space on the SVN server but allows for an easy comparison between significant older revisions. I tend to create further tags, e.g. for the final versions or different uploads to the arXiv.

Request new SVN/calendar password

In order to request a new password, issue htpasswd2 -n <user>, where <user> must be replaced by your SVN/calendar user name, and follow the instructions. As a result, you will obtain something like <user>:ffZtTqEu/D.cw. This output must be forwarded to the responsible administrator (Günther Haas).

Identify unknown LaTeX symbols

If you know how a symbol looks like but can't remember the corresponding LaTeX command, try Detexify!

Encoding of and Umlauts in tex-files

The encoding of file.tex can be checked using file -i file.tex, a possible result could be file.tex: text/x-tex; charset=iso-8859-1. This can be changed e.g. to utf-8 by opening the file in vim and issuing :write ++enc=utf8.

In utf-8 encoded tex-files, German Umlauts can be entered using a German keyboard, but the tex-header must contain \usepackage[utf8]{inputenc}.

Embed all fonts when converting from Postscript to PDF

Converting file.ps into file.pdf using ps2pdf file.ps file.pdf can result in a PDF file with not all fonts embedded. This can be checked using pdffonts file.pdf (check column emb).

A high-quality output with all fonts embedded can be obtained by issuing ps2pdf14 -dPDFSETTINGS=/prepress -dEmbedAllFonts=true file.ps file.pdf. In order to guarantee a certain output paper size, parameters like -sPAPERSIZE=letter or -sPAPERSIZE=a4paper can be added. This is necessary e.g. for US conferences when the paper is generated in a German LaTeX environment.

In order to embed fonts during the conversion from EPS to PDF, use the command ps2pdf14 -dEPSCrop -dAutoRotatePages=/None -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dUseFlateCompression=true -dPDFSETTINGS=/prepress -dEmbedAllFonts=true file.eps file.pdf.

Embed all fonts in a PDF file

If you have a pdf file file.pdf that uses non-embedded fonts, you can create a file file_fonts.pdf that has all fonts embedded using the Ghostscript command gs -q -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -dCompatabilityLevel="1.4" -sOutputFile="file_fonts.pdf" -dPDFSETTINGS=/prepress -dEmbedAllFonts=true -f "file.pdf". This is necessary useful in case you don't want to embed fonts in every single included pdf figure.