[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6.4 Misplaced previews

If you are reading this section, the first thing is to check that your problem is not caused by x-symbol in connection with an installation not supporting 8-bit characters (see x-symbol interoperation). If not, here’s the beef:

As explained previously, Emacs uses pseudo-error messages generated by the ‘preview’ package in order to pinpoint the exact source location where a preview originated. This works in running text, but fails when preview material happens to lie in macro arguments, like the contents of \emph. Those macros first read in their entire argument, munge it through, perhaps transform it somehow, process it and perhaps then typeset something. When they finally typeset something, where is the location where the stuff originated? TeX, having read in the entire argument before, does not know and actually there would be no sane way of defining it.

For previews contained inside such a macro argument, the default behaviour of preview-latex is to use a position immediately after the closing brace of the argument. All the previews get placed there, all at a zero-width position, which means that Emacs displays it in an order that preview-latex cannot influence (currently in Emacs it is even possible that the order changes between runs). And since the placement of those previews is goofed up, you will not be able to regenerate them by clicking on them. The default behaviour is thus somewhat undesirable.

The solution (like with other preview problems) is to tell the LaTeX ‘preview’ package how to tackle this problem (see The LaTeX style file). Simply, you don’t need \emph do anything at all during previews! You only want the text math previewed, so the solution is to use \PreviewMacro*\emph in the preamble of your document which will make LaTeX ignore \emph completely as long as it is not part of a larger preview (in which case it gets typeset as usual). Its argument thus becomes ordinary text and gets treated like ordinary text.

Note that it would be a bad idea to declare \PreviewMacro*[{{}}]\emph since then both \emph as well as its argument would be ignored instead of previewed. For user-level macros, this is almost never wanted, but there may be internal macros where you might want to ignore internal arguments.

The same mechanism can be used for a number of other text-formatting commands like \textrm, \textit and the like. While they all use the same internal macro \text@command, it will not do to redefine just that, since they call it only after having read their argument in, and then it already is too late. So you need to disable every of those commands by hand in your document preamble.

Actually, we wrote all of the above just to scare you. At least all of the above mentioned macros and a few more are already catered for by a configuration file ‘prauctex.cfg’ that gets loaded by default unless the ‘preview’ package gets loaded with the ‘noconfig’ option. You can make your own copy of this file in a local directory and edit it in case of need. You can also add loading of a file of your liking to preview-default-preamble, or alternatively do the manual disabling of your favorite macro in preview-default-preamble, which is customizable in the ‘Preview Latex’ group.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated on January 17, 2024 using texi2html 1.82.