From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nick Dokos Subject: Re: Fwd: Is `org-preview-latex-fragment` sensitive to alignment specified by document class options? Date: Wed, 09 Apr 2014 13:22:03 -0400 Message-ID: <87mwfus9j8.fsf@alphaville.bos.redhat.com> References: Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:41725) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WXwCf-0002pn-Mt for emacs-orgmode@gnu.org; Wed, 09 Apr 2014 13:22:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WXwCX-0003K4-Ci for emacs-orgmode@gnu.org; Wed, 09 Apr 2014 13:22:25 -0400 Received: from plane.gmane.org ([80.91.229.3]:43843) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WXwCX-0003JS-5e for emacs-orgmode@gnu.org; Wed, 09 Apr 2014 13:22:17 -0400 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1WXwCW-0005rO-6v for emacs-orgmode@gnu.org; Wed, 09 Apr 2014 19:22:16 +0200 Received: from nat-pool-bos-t.redhat.com ([66.187.233.206]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 09 Apr 2014 19:22:16 +0200 Received: from ndokos by nat-pool-bos-t.redhat.com with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Wed, 09 Apr 2014 19:22:16 +0200 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Rob Stewart writes: > > I asked the question below a few days ago, about whether > `org-preview-latex-fragment` is sensitive document class options that > might affect alignment. I've so far not received feedback, and > wondered whether there is more information that I could provide, or if > my question is not interesting to other people :-) > > .... > > Is there a way to make `org-preview-latex-fragment` sensitive to LaTeX > class options? I have a simple example to demonstrate where it does > not: > > %%%%%%% #+LaTeX_CLASS: article #+LaTeX_CLASS_OPTIONS: [fleqn] > #+LATEX_HEADER: \usepackage{amsmath} > > \begin{gather} b := (a \oplus s_1) \oplus s_2 \\ e := 0 \\ > \end{gather} %%%%%%% > > If LaTeX is generated for this document with > `org-latex-export-to-latex`, which is compiled to a PDF with pdflatex, > the "b :=" and the "e :=" are left aligned i.e. the "b" and "e" are > vertically aligned. > > However, if `org-preview-latex-fragment` is called within emacs, the > left alignment specified with the `[fleqn]` class option is not > honoured. Thus, the two lines in the `gather` block are centrally > aligned, which is the default case for `gather` blocks. > org-preview-latex-image is its own self-contained universe and has very little in common with latex exporting. In particular, the preview preamble is generated by calling org-create-formula--latex-header. Try evaluating a call to the function in your *scratch* buffer and see what it gives you - I get: ,---- | (org-create-formula--latex-header) | "\\documentclass{article} | \\usepackage[usenames]{color} | % Package minted omitted | \\usepackage[utf8]{inputenc} | \\usepackage[T1]{fontenc} | % Package fixltx2e omitted | \\usepackage{graphicx} | % Package longtable omitted | % Package float omitted | % Package wrapfig omitted | % Package rotating omitted | \\usepackage[normalem]{ulem} | \\usepackage{amsmath} | \\usepackage{textcomp} | \\usepackage{marvosym} | \\usepackage{wasysym} | \\usepackage{amssymb} | % Package hyperref omitted | \\tolerance=1000 | \\pagestyle{empty} % do not remove | % The settings below are copied from fullpage.sty | \\setlength{\\textwidth}{\\paperwidth} | \\addtolength{\\textwidth}{-3cm} | \\setlength{\\oddsidemargin}{1.5cm} | \\addtolength{\\oddsidemargin}{-2.54cm} | \\setlength{\\evensidemargin}{\\oddsidemargin} | \\setlength{\\textheight}{\\paperheight} | \\addtolength{\\textheight}{-\\headheight} | \\addtolength{\\textheight}{-\\headsep} | \\addtolength{\\textheight}{-\\footskip} | \\addtolength{\\textheight}{-3cm} | \\setlength{\\topmargin}{1.5cm} | \\addtolength{\\topmargin}{-2.54cm}" `---- As you can see both the document class and the class options (none) are hardwired. The function looks like this ,---- | (defun org-create-formula--latex-header () | "Return LaTeX header appropriate for previewing a LaTeX snippet." | (let ((info (org-combine-plists (org-export--get-global-options | (org-export-get-backend 'latex)) | (org-export--get-inbuffer-options | (org-export-get-backend 'latex))))) | (org-latex-guess-babel-language | (org-latex-guess-inputenc | (org-splice-latex-header | org-format-latex-header org-latex-default-packages-alist | org-latex-packages-alist t (plist-get info :latex-header))) | info))) `---- so in order to add class options you have to redefine the variable org-format-latex-header. But whatever you set them to, they will be hardwired: there is no way to propagate a setting from the org file. Nick