From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Salome Soedergran" Subject: Re: export to latex without labels Date: Sat, 19 Jul 2014 22:24:59 +0200 Message-ID: <21450.54299.595454.644227@gargle.gargle.HOWL> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:39722) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X8bBs-0007Ki-W1 for emacs-orgmode@gnu.org; Sat, 19 Jul 2014 16:25:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1X8bBm-00066j-0D for emacs-orgmode@gnu.org; Sat, 19 Jul 2014 16:25:08 -0400 Received: from zhhdzmsp-smta18.bluewin.ch ([195.186.227.133]:58460) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1X8bBl-000663-Qo for emacs-orgmode@gnu.org; Sat, 19 Jul 2014 16:25:01 -0400 Received: from athen (188.60.116.75) by zhbdzmsp-smta13.bluewin.ch (8.5.142) (authenticated as jogi@bluewin.ch) id 51DDDBBD1BB50B70 for emacs-orgmode@gnu.org; Sat, 19 Jul 2014 20:24:59 +0000 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 Hi Eric, Eric Abrahamsen writes: > The error message is telling you that the wrong number of arguments were > passed to your filter function. If you look at the doctoring of > org-export-filter-final-output-functions, you'll see that functions in > this filter are passed three arguments (note the 3 at the end of your > error message), but your function only accepts two. > > Once you've sorted that out, you'll see that the argument you're missing > is an argument representing the full exported string. That means that > `replace-regexp' is probably the wrong function to be using inside your > function. Actually, if you look at the docstring of replace-regexp, that > was the wrong function to be using anyway :) It recommends using a > combination of re-search-forward and replace-match in lisp functions. > > Since you've got a string, try replace-regexp-in-string instead! See the > docstring... > > Lastly, it's possible that you could use a more narrowly-targeted filter > for this particular case (rather than filter-final-output, which doesn't > kick in until everything else is done). When exporting to latex, the > element that turns into \label is a target, and that happens in > org-latex-target. The corresponding filter is > org-export-filter-target-functions, so you might consider putting your > function in that variable instead. That could be much simpler: the > function would take three arguments, the second of which is the backend, > as a symbol. You could just check if the symbol was 'latex, and have the > function return an empty string. The function body could be as simple > as: > > (defun org-latex-remove-labels (string backend data) > (if (org-export-derived-backend-p backend 'latex) > "" > string)) > > I haven't tested this for unexpected consequences, mind you... > > Really really lastly, does it really matter if there are unused \labels > in the output? > [...] > Hmm, that might have been too much information. What I'm proposing is > just this: > > (defun ks/org-latex-remove-labels (string backend info) > "Remove labels generated by org-mode" > (if (org-export-derived-backend-p backend 'latex) > "" > string)) > > (eval-after-load 'ox-latex > '(add-to-list 'org-export-filter-target-functions > 'ks/org-latex-remove-labels)) > Thank you so much for your explanations! That was NOT too much information but exactly what I'd been hoping for. It's this sort of information that helps me to come to a better understanding of emacs. I have tested your suggestion with just no result whatsoever. But with the help of your explanations I've managed to change my bit of code accordingly and now it works: (defun ks/org-latex-remove-labels (string backend info) "Remove labels generated by org-mode" (when (org-export-derived-backend-p backend 'latex) (let ((case-fold-search nil)) (goto-char 1) (replace-regexp-in-string "\\\\label{sec-[0-9][^}]*}\n" "" string) ))) (eval-after-load 'ox-latex '(add-to-list 'org-export-filter-final-output-functions 'ks/org-latex-remove-labels)) Thanks again! Salome