for when you can't remember how to draw an angstrom: detexify .. image:: http://2.bp.blogspot.com/_lsgW26mWZnU/SydQdSeP5EI/AAAAAAAAFds/f8-29Qvef3E/s400/detexify.png
figure*
to make figures/deluxetables span the page in LaTeX: \begin{figure*} ... \end{figure*}
Ghostscript error?
I've been receiving the following error when attempting to compile (ps2pdf) my w5 outflows paper:
Error: /rangecheck in --get--Operand stack: pdfmark --dict:20/25(ro)(L)-- --nostringval-- 50Execution stack: %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1878 1 3 %oparray_pop 1877 1 3 %oparray_pop 1861 1 3 %oparray_pop 1755 1 3 %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- %finish_show --nostringval-- --nostringval-- 8 6 1 --nostringval-- (pdf_text_enum_t) %op_show_continue --nostringval--Dictionary stack: --dict:1153/1684(ro)(G)-- --dict:0/20(G)-- --dict:71/200(L)-- --dict:125/300(L)-- --dict:44/200(L)-- --dict:138/224(L)--Current allocation mode is localLast OS error: 2Current file position is 267478928GPL Ghostscript 8.71: Unrecoverable error, exit code 1
I get the same error with Ghostscript 8.64, but on my laptop, using the fink version, it works. Similarly, there are errors with the postscript, so I'm led to believe it's an error in latex:
$ latex --versionpdfTeX 3.1415926-1.40.10-2.2 (TeX Live 2009)kpathsea version 5.0.0Copyright 2009 Peter Breitenlohner (eTeX)/Han The Thanh (pdfTeX).There is NO warranty. Redistribution of this software iscovered by the terms of both the pdfTeX copyright andthe Lesser GNU General Public License.For more information about these matters, see the filenamed COPYING and the pdfTeX source.Primary author of pdfTeX: Peter Breitenlohner (eTeX)/Han The Thanh (pdfTeX).Compiled with libpng 1.2.39; using libpng 1.2.39Compiled with zlib 1.2.3; using zlib 1.2.3Compiled with xpdf version 3.02pl3
No idea what the cause is but it's time to start documenting steps and looking for a workaround. Compiling on the lappy isn't a good option.
latex: producing a bibliography and paper independently
AG If you want citations to work, but you don't want your bibliography to show up, try the following: latex file.texbibtex file comment out \biblography{} line latex file.tex If you latex again, it will screw up. To make an independent bibliography, remove all text and replace all citep/citet/cite commands with \nocite{} in a different document. Remember to usepackage{natbib} etc. You may have to copy over the .bbl file.
LaTeX: replace double quotes with tex quotes
People often make the mistake of putting " in place of `` in LaTeX documents. To repair this, the only easy solution is something like: s/\(\s\)"/\1``/g in VIM or sed. I've seen alternate solutions posted but they're all too complicated. One recommendation was to switch to XeTeX, which sounds like overkill, and others all stated that a complicated perl script is required. The latter is technically true, but why isn't such a thing readily available? Any other ideas?
LaTeX: VIM + Skim
macvim-skim-install.sh is my install script for using MacVim.app with Skim.app. The agpy wiki page has instructions that are probably more clear; I don't really like the colorscheme / layout of this blog. You can use synctex to make an editor and viewer work together, but it is far from easy and far harder than it should be. Forward-search is pretty easy, but the latex-suite \ls only works intermittently and is not easily customizable. I had to do the following: For VIM->Skim.app (Skim.app is necessary for any of this to work), add these commands to .vimrc:
" Activate skimmap ,v :w<CR>:silent !/Applications/Skim.app/Contents/SharedSupport/displayline -r <C-r>=line('.')<CR> %<.pdf %<CR><CR>map ,p :w<CR>:silent !pdflatex -synctex=1 --interaction=nonstopmode %:p <CR>:silent !/Applications/Skim.app/Contents/SharedSupport/displayline -r <C-r>=line('.')<CR> %<.pdf %<CR><CR>map ,m :w<CR>:silent !make <CR>:silent !/Applications/Skim.app/Contents/SharedSupport/displayline -r <C-r>=line('.')<CR> %<.pdf %<CR><CR>" Reactivate VIMmap ,r :w<CR>:silent !/Applications/Skim.app/Contents/SharedSupport/displayline -r <C-r>=line('.')<CR> %<.pdf %<CR>:silent !osascript -e "tell application \"MacVim\" to activate" <CR><CR>map ,t :w<CR>:silent !pdflatex -synctex=1 --interaction=nonstopmode %:p <CR>:silent !/Applications/Skim.app/Contents/SharedSupport/displayline -r <C-r>=line('.')<CR> %<.pdf %<CR>:silent !osascript -e "tell application \"MacVim\" to activate" <CR><CR>
The ,m command will reload the file and put your cursor where the text is. ,t will return VIM to the front afterwards. Going the other way (reverse-search / inverse-search) was MUCH more challenging. The code that does this is on agpy. Reproduced here for posterity (I hope to update the agpy version to deal with tabs). [A few hours later, I HAVE replaced the code. Below are the old applescript version, then the new, vim-based version #!/bin/bashfile="$1"line="$2"[ "${file:0:1}" == "/" ] || file="${PWD}/$file"# Use Applescript to activate VIM, find file, and load it# the 'delay' command is needed to prevent command/control/shift from sticking when this# is activated (e.g., from Skim, where the command is command-shift-click)## key code 53 is "escape" to escape to command mode in VIMexec osascript \-e "delay 0.2" \-e "tell application \"MacVim\" to activate" \-e "tell application \"System Events\"" \-e " tell process \"MacVim\"" \-e " key code 53 "\-e " keystroke \":set hidden\" & return " \-e " keystroke \":if bufexists(bufname('$file'))\" & return " \-e " keystroke \":exe \\\":buffer \\\" . bufnr(bufname('$file'))\" & return " \-e " keystroke \":else \" & return " \-e " keystroke \":echo \\\"Could not load file\\\" \" & return " \-e " keystroke \":endif\" & return " \-e " keystroke \":$line\" & return " \-e " end tell" \-e "end tell" New code: download link A
#!/bin/bash# Install directions:# Put this file somewhere in your path and make it executable# To set up in Skim, go to Preferences:Sync# Change Preset: to Custom# Change Command: to macvim-load-line# Change Arguments: to "%file" %linefile="$1"line="$2"debug="$3"echo file: $fileecho line: $lineecho debug: $debugfor server in `mvim --serverlist` do foundfile=`mvim --servername $server --remote-expr "WhichTab('$file')"` if [[ $foundfile > 0 ]] then mvim --servername $server --remote-expr "foreground()" if [[ $debug ]] ; then echo mvim --servername $server --remote-send ":exec \"tabnext $foundfile\" "; fi mvim --servername $server --remote-send ":exec \"tabnext $foundfile\" " if [[ $debug ]] ; then echo mvim --servername $server --remote-send ":$line "; fi mvim --servername $server --remote-send ":$line " fidone
Save that as an executable in your default path (e.g., /usr/local/bin/macvim-load-line) and open Skim.app, go to Preferences:Sync and make the command look like this:
You need to have mvim on your path. mvim comes with MacVim.app, but is NOT installed by default. Install it by doing something like: `` cp /Users/adam/Downloads/MacVim-7_3-53/mvim /usr/local/bin/mvim `` You'll also need to install WhichTab.vim in your ~/.vim/plugins/ directory. It's available here (download link B). Here's the source:
function! WhichTab(filename) " Try to determine whether file is open in any tab. " Return number of tab it's open in let buffername = bufname(a:filename) if buffername == "" return 0 endif let buffernumber = bufnr(buffername) " tabdo will loop through pages and leave you on the last one; " this is to make sure we don't leave the current page let currenttab = tabpagenr() let tab_arr = [] tabdo let tab_arr += tabpagebuflist() " return to current page exec "tabnext ".currenttab " Start checking tab numbers for matches let i = 0 for tnum in tab_arr let i += 1 echo "tnum: ".tnum." buff: ".buffernumber." i: ".i if tnum == buffernumber return i endif endforendfunctionfunction! WhichWindow(filename) " Try to determine whether the file is open in any GVIM *window* let serverlist = split(serverlist(),"\n") "let currentserver = ???? for server in serverlist let remotetabnum = remote_expr(server, \"WhichTab('".a:filename."')") if remotetabnum != 0 return server endif endforendfunction
usetex failure in latex documents
When I use matplotlib's internal tex (rcParams['text.useTex']=False), the postscript files generated cause errors that look like this when you try to ps2pdf them: ps2pdf h2co_pilot.psError: /rangecheck in --get--Operand stack: --dict:20/25(ro)(L)-- --nostringval-- 71Execution stack: %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1862 1 3 %oparray_pop 1861 1 3 %oparray_pop 1845 1 3 %oparray_pop 1739 1 3 %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- %finish_show --nostringval-- --nostringval-- 9 6 0 --nostringval-- (pdf_text_enum_t) %op_show_continue --nostringval--Dictionary stack: --dict:1147/1684(ro)(G)-- --dict:0/20(G)-- --dict:70/200(L)-- --dict:116/300(L)-- --dict:44/200(L)-- --dict:25/42(L)--Current allocation mode is localLast OS error: 2Current file position is 791626GPL Ghostscript 8.64: Unrecoverable error, exit code 1make: *** [h2co_pilot.pdf] Error 1 They will not open in MacOS's Preview.app either. Solution: Make figures with rcParams['text.useTex'] = True
wrapping text around a figure in latex
An example from Devin: %\begin{wrapfigure}{l}{0.5\textwidth} % \vspace{-27pt} % \begin{center} % \includegraphics[width=0.48\textwidth]{nsf_fig3.ps} % \end{center} % \vspace{-27pt} % \caption{\it{}} % \vspace{-12pt} %\end{wrapfigure} 1:16 \usepackage{wrapfig}
Page 1 / 1