[Tex/LaTex] What does “running in backwards compatibility mode” mean and what should I fix to get rid of it


I was typesetting a Tex file, but I got this warning:

! Package pgfplots Warning: running in backwards compatibility mode (unsuitable tick labels; missing features). Consider writing \pgfplotsset{compat=1.6} into your preamble.

Now, I know that adding that line to the preamble solves the problem, but my question focuses more on the "why am I getting this" part of the problem.

What should I be looking for in my Tex file? Usually I get a "problem in line X" indication, but here, I'm lost. I don't understand what it is complaining about.

Best Answer

One of the principles which the LaTeX kernel, and many of the packages outside the kernel, attempt to follow is that documents should look the same (even up to spacing behaviour) when they recompiled on different machines with different package versions, even decades apart.

pgfplots is a regularly updated package that frequently adds new features and fixes bugs. This also means that some old documents might look different if recompiled with those new features/bug fixes enabled. Hence pgfplots provides a feature whereby you have to explicitly request which version of the package you want to use (or at least essentially, as the package provides backwards compatibility emulation for older versions), and hence which new features and bug fixes you want access to.

This is a "good thing", but it explains your warning - you are not using all the features and bug fixes available to you. Some of the fixes include better placement of tick labels, as mentioned in the warning. This is not enabled by default as it would clearly change how existing documents appear.

Section 2.2 "Upgrade remarks" of the pgfplots manual discusses this.

For completeness, I provide information on selecting the version:

  • Requesting a specific version

    To request a specific version, just use the compat option:

  • The bleeding edge (discouraged)

    You may be happy to live on "the bleeding edge" and to always use the most recent bug fixes etc that pgfplots provides. pgfplots also allows you to specify this, but encourages you not to as your document may compile differently before/after updating the package at certain times, and you may not be explicitly aware of the changes or what has caused them.

    Hence, if you choose to select the newest version with


    then pgfplots still issues a message (not a warning) to remind you, which you might miss:

    Package pgfplots notification 'compat/show suggested version=true': document has been generated with the most recent feature set (\pgfplotsset{compat=1.7}).

    This notification can also be disabled:

    \pgfplotsset{compat=newest,compat/show suggested version=false}

    Remember though that the pgfplots author discourages this! Again, see the manual for the offical information.

Related Question