**H**ow comes BibTeX is unable to spot homonyms?! Namely, if I quote two of my 1996 papers in the same LaTeX document, they will appear as Robert (1996a) and Robert (1996b). However, if I quote two different authors (or groups of authors) with the same surname, Martin as in the above example, who both happened to write a paper in 2014, BibTeX returns Martin (2014) and Martin (2014) in the output, hence it fails to recognise they are different authors, which is just weird! At least for author-year styles. I looked on Stack Exchange TeX forum, but the solution I found did not work with the IMS and Springer styles.

## Archive for LaTeX

## bibTeX and homonymy

Posted in Books, University life with tags BibTeX, compilation, LaTeX, MCQMC2014, scientific editing on October 31, 2015 by xi'an## capacity exceeded…

Posted in Books, University life with tags bold fonts, LaTeX, newcommand, renewcommand on April 23, 2015 by xi'an**A** silly LaTeX error took me a few minutes too many to solve: I defined

\renewcommand\theta{\boldsymbol{\theta}}

which got me the error message

TeX capacity exceeded , sorry [ grouping levels =255].

that I understood as a recursive definition. So I instead pre-defined the new **θ** as

\newcommand\btheta{\boldsymbol{\theta}} \renewcommand\theta\btheta

which did not work either… After google-ing the issue, I found this on-line LaTeX Wikibook that provided me with the solution:

\let\btheta{\boldsymbol{\theta}} \renewcommand\theta\btheta

which worked. Of course, a global change of \theta into \btheta would have been much much faster to execute….

## some LaTeX tricks

Posted in Books, Kids, Statistics, University life with tags bigint, graphical extension, LaTeX, mathematical equations, StackExchange on November 21, 2014 by xi'anHere are a few LaTeX tricks I learned or rediscovered when working on several papers the past week:

- I am always forgetting how to make aligned equations with a single equation number, so I found this solution on the TeX forum of stackexchange, Namely use the equation environment and then an aligned environment inside. Or the split environment. But it does not always work…
- Another frustrating black hole is how to deal with integral signs that do not adapt to the integrand. Too bad we cannot use \left\int, really! Another stackexchange question led me to the bigints package. Not perfect though.
- Pierre Pudlo also showed me the commands \graphicspath{{dir1}{dir2}} and \DeclareGraphicsExtensions{.pdf,.png,.jpg} to avoid coding the entire path to each image and to put an order on the extension type, respectively. The second one is fairly handy when working on drafts. The first one does not seem to work with symbolic links, though…

## BibTool on the air

Posted in Books, Linux, Travel, University life with tags bash, BibTeX, BibTool, Birmingham, Charles de Gaulle, LaTeX, link, Linux, RER B, Roissy, University of Warwick on October 23, 2014 by xi'an**Y**esterday night, just before leaving for Coventry, I realised I had about 30 versions of my “mother of all .bib” bib file, spread over directories and with broken links with the original mother file… (I mean, I always create bib files in new directories by a hard link,

ln ~/mother.bib

but they eventually and inexplicably end up with a life of their own!) So I decided a Spring clean-up was in order and installed BibTool on my Linux machine to gather all those versions into a new encompassing all-inclusive bib reference. I did not take advantage of the many possibilities of the program, written by Gerd Neugebauer, but it certainly solved my problem: once I realised I had to set the variates

check.double = on check.double.delete = on pass.comments = off

all I had to do was to call

bibtool -s -i ../*/*.bib -o mother.bib bibtool -d -i mother.bib -o mother.bib bibtool -s -i mother.bib -o mother.bib

to merge all bib file and then to get rid of the duplicated entries in mother.bib (the -d option commented out the duplicates and the second call with -s removed them). And to remove the duplicated definitions in the preamble of the file. This took me very little time in the RER train from Paris-Dauphine (where I taught this morning, having a hard time to make the students envision the empirical cdf as an average of Dirac masses!) to Roissy airport, in contrast with my pedestrian replacement of all stray siblings of the mother bib into new proper hard links, one by one. I am sure there is a bash command that could have done it in one line, but I spent instead my flight to Birmingham switching all existing bib files, one by one…

## unicode in LaTeX

Posted in Books, Linux, Statistics, University life with tags blogging, LaTeX, papers, StackExchange, Unicode, UTF-8, Wordpress on October 9, 2014 by xi'an**A**s I was hurriedly trying to cram several ‘Og posts into a conference paper (!), I looked around for a way of including Unicode characters straight away. And found this solution on StackExchange:

\usepackage[mathletters]{ucs}

\usepackage[utf8x]{inputenc}

which just suited me fine!

## Le Monde puzzle [#872]

Posted in Books, Kids, Statistics, University life with tags LaTeX, Le Monde, Leslie Lamport, lions, mathematical puzzle, Tring Prize on June 28, 2014 by xi'an**A**n “mildly interesting” Le Monde mathematical puzzle that eventually had me running R code on a cluster:

Within the set {1,…,56}, take 12 values at random, x_{1},…,x_{12}. Is it always possible to pick two pairs from those 12 balls such that their sums are equal?

**I**ndeed, while exhaustive search cannot reach the size of the set,

fowler=function(i=1,pred=NULL){ pred=c(pred,i) for (j in (1:N)[-pred]){ a=outer(c(pred,j),c(pred,j),"+") if ((sum(duplicated(a[lower.tri(a)]))>0)){ val=FALSE }else{ if (length(pred)==n-1){ print(c(pred,j)) val=TRUE }else{ val=fowler(j,pred)}} if (val) break() } return(val) } fowler(i=N,pred=1)

with N=35 being my upper limit (and n=9 the largest value inducing double sums), the (second) easiest verification goes by sampling as indicated and checking for duplicates.

mindup=66 for (t in 1:10^7){ #arguing that extremes should be included x=c(1,56,sample(2:55,10)) A=outer(x,x,"+") mindup=min(mindup,sum(duplicated(A[lower.tri(A)]))) if (mindup==0) break()}

**T**he values of mindup obtained by running this code a few times are around 5, which means a certain likelihood of a positive answer to the above question…

**T**his problem raises a much more interesting question, namely how to force simulations of those 12-uplets towards the most extreme values of the target function, from simulated annealing to cross-entropy to you-name-it… Here is my simulated annealing attempt:

target=function(x){ a=outer(x,x,"+") return(sum(duplicated(a[lower.tri(a)])))} beta=100 Nmo=N-1 nmt=n-2 nmo=n-1 x=sort(sample(2:Nmo,nmt)) cur=c(1,x,N) tarcur=target(cur) for (t in 1:10^6){ dex=sample(2:nmo,2) prop=sort(c(cur[-dex],sample((2:Nmo)[-(cur-1)],2))) tarprop=target(prop) if (beta*log(runif(1))<tarprop -tarcur){ cur=prop;tarcur=tarprop} beta=beta*.9999 if (tarcur==0) break()}

**A**part from this integer programming exercise, a few items of relevance in this Le Monde Science & Medicine leaflet. A portrait of Leslie Lamport for his Turing Prize (yes, the very same Leslie Lamport who created **LaTeX**!, and wrote this book which stood on most mathematicians’ bookshelves for decades, with the marginally annoying lion comics at the head of each chapter!). A tribune on an interesting book, *The Beginning and the End*, by Clément Vidal, discussing how to prepare for the end of the Universe by creating a collective mind. And the rise of biobanks…