emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [BUG]: contradictory requirements between resolving links and noweb result block
@ 2024-02-02 17:43 gerard.vermeulen
  2024-02-02 20:12 ` Ihor Radchenko
  0 siblings, 1 reply; 4+ messages in thread
From: gerard.vermeulen @ 2024-02-02 17:43 UTC (permalink / raw)
  To: Emacs orgmode, Ihor Radchenko

Hi,

I want to have a kind of dynamic RESULTS: noweb block to select what
other block to put in the LaTeX  preamble on LaTeX export.
I can get it working, but in this case links to the RESULTS: noweb block
are not resolved.  I found no way to get the links resolved without
breaking Noweb.  See my MWE with instructions below:

--- begin Org file ---
# -*- org-latex-prefer-user-labels: t -*- for easier understanding
Listing [[noop]], [[make-noweb]], and [[make-noweb-result]].
#+caption: NOOP
#+name: noop
#+begin_src latex :exports code
% I want to be in the LaTeX preamble above \author{}.
#+end_src
BUG: contradictory requirements for listing [[make-noweb-result]]:
1. Noweb works only in case [[make-noweb]] wraps [[make-noweb-result]] 
with
    *:exports both*.
2. Resolving links works only in case [[make-noweb]] wraps
    [[make-noweb-result]] with *:exports code*.
#+caption: Change after 1st :exports "both" to "code" and vice versa.
#+caption: Execute this block after changing, but before LaTeX export.
#+header: :wrap "src latex -n :exports both :noweb yes :results raw"
#+name: make-noweb
#+begin_src emacs-lisp :exports both :eval no-export
"#+latex_header: <<noop>>"
#+end_src
#+caption: I try to put listing [[noop]] body in the LaTeX preamble.
#+name: make-noweb-result
#+RESULTS: make-noweb
#+begin_src latex -n :exports both :noweb yes :results raw
,#+latex_header: <<noop>>
#+end_src
--- end Org file ---

I realize that this way of doing is contrived.
What I like about it, is that the [[make-noweb-results]] is directly
visible.  I can probably also modify `org-latex-packages-alist' but
that is less visible.

Regards -- Gerard




^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [BUG]: contradictory requirements between resolving links and noweb result block
  2024-02-02 17:43 [BUG]: contradictory requirements between resolving links and noweb result block gerard.vermeulen
@ 2024-02-02 20:12 ` Ihor Radchenko
  2024-02-04 11:02   ` gerard.vermeulen
  0 siblings, 1 reply; 4+ messages in thread
From: Ihor Radchenko @ 2024-02-02 20:12 UTC (permalink / raw)
  To: gerard.vermeulen; +Cc: Emacs orgmode

gerard.vermeulen@posteo.net writes:

> I want to have a kind of dynamic RESULTS: noweb block to select what
> other block to put in the LaTeX  preamble on LaTeX export.
> I can get it working, but in this case links to the RESULTS: noweb block
> are not resolved.  I found no way to get the links resolved without
> breaking Noweb.  See my MWE with instructions below:

May you please provide more detailed information about your MWE?
What exactly are the steps? What did you expect to happen? What happened instead?

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [BUG]: contradictory requirements between resolving links and noweb result block
  2024-02-02 20:12 ` Ihor Radchenko
@ 2024-02-04 11:02   ` gerard.vermeulen
  2024-02-05 12:32     ` Ihor Radchenko
  0 siblings, 1 reply; 4+ messages in thread
From: gerard.vermeulen @ 2024-02-04 11:02 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Emacs orgmode

[-- Attachment #1: Type: text/plain, Size: 2135 bytes --]



On 02.02.2024 21:12, Ihor Radchenko wrote:
> gerard.vermeulen@posteo.net writes:
> 
>> I want to have a kind of dynamic RESULTS: noweb block to select what
>> other block to put in the LaTeX  preamble on LaTeX export.
>> I can get it working, but in this case links to the RESULTS: noweb 
>> block
>> are not resolved.  I found no way to get the links resolved without
>> breaking Noweb.  See my MWE with instructions below:
> 
> May you please provide more detailed information about your MWE?
> What exactly are the steps? What did you expect to happen? What
> happened instead?

I have turned my MWE into two almost identical MWE's (attached,
including a diff), so that LaTeX export output shows the problem.
I start with my expectations and then I explain what contains the
LaTeX output for mwe-noweb-ok.org and mwe-links-ok.org.

* LaTeX export objectives

Noweb should work, meaning that the LaTeX output preamble should
contain (above \author) the line:
#+begin_src latex
% Should go to the LaTeX preamble above \author{}.
#+end_src

Resolving links should work, meaning that the LaTeX output should
contain (below \tableofcontents) the line
#+begin_src latex
Listing \ref{noop}, \ref{make-noweb}, and \ref{make-noweb-result}.
#+end_src
where all links have user labels.

* mwe-noweb-ok

Export of mwe-noweb-ok.org to LaTeX shows that noweb works
Noweb works, because the preamble contains:
#+begin_src latex
% Should go to the LaTeX preamble above \author{}.
#+end_src

Resolving the last link fails, because it has an org-id
#+begin_src latex
Listing \ref{noop}, \ref{make-noweb}, and \ref{orgd105392}.
#+end_src
while the caption of the linked listing has a user label.

* mwe-links-ok

Noweb fails, because the LaTeX output preamble does contain
#+begin_src latex
\usepackage{hyperref}
\author{Gerard Vermeulen}
#+end_src
without the LaTeX comment.

Resolving links works, because the LaTeX output contains
#+begin_src latex
Listing \ref{noop}, \ref{make-noweb}, and \ref{make-noweb-result}.
#+end_src

* Problem

I can find no configuration where noweb and resolving the link
to the noweb block works.

Regards -- Gerard

[-- Attachment #2: mwe-noweb-ok.org --]
[-- Type: application/octet-stream, Size: 1068 bytes --]

# -*- org-latex-prefer-user-labels: t; org-latex-src-block-backend: listings -*-
Listing [[noop]], [[make-noweb]], and [[make-noweb-result]].

BUG: contradictory requirements for listing [[make-noweb-result]]:
1. Noweb works only in case [[make-noweb]] wraps [[make-noweb-result]] with
   *:exports both*.
2. Resolving links works only in case [[make-noweb]] wraps
   [[make-noweb-result]] with *:exports code*.

#+caption: NOOP
#+name: noop
#+begin_src latex :exports code
% Should go to the LaTeX preamble above \author{}.
#+end_src

#+caption: Change after 1st :exports "both" to "code" and vice versa.
#+caption: Execute this block after changing, but before LaTeX export.
#+header: :wrap "src latex -n :exports both :noweb yes :results raw"
#+name: make-noweb
#+begin_src emacs-lisp :exports both :eval no-export
"#+latex_header: <<noop>>"
#+end_src

#+caption: I try to put listing [[noop]] body in the LaTeX preamble.
#+name: make-noweb-result
#+RESULTS: make-noweb
#+begin_src latex -n :exports both :noweb yes :results raw
,#+latex_header: <<noop>>
#+end_src

[-- Attachment #3: mwe-links-ok.org --]
[-- Type: application/octet-stream, Size: 1068 bytes --]

# -*- org-latex-prefer-user-labels: t; org-latex-src-block-backend: listings -*-
Listing [[noop]], [[make-noweb]], and [[make-noweb-result]].

BUG: contradictory requirements for listing [[make-noweb-result]]:
1. Noweb works only in case [[make-noweb]] wraps [[make-noweb-result]] with
   *:exports both*.
2. Resolving links works only in case [[make-noweb]] wraps
   [[make-noweb-result]] with *:exports code*.

#+caption: NOOP
#+name: noop
#+begin_src latex :exports code
% Should go to the LaTeX preamble above \author{}.
#+end_src

#+caption: Change after 1st :exports "both" to "code" and vice versa.
#+caption: Execute this block after changing, but before LaTeX export.
#+header: :wrap "src latex -n :exports code :noweb yes :results raw"
#+name: make-noweb
#+begin_src emacs-lisp :exports both :eval no-export
"#+latex_header: <<noop>>"
#+end_src

#+caption: I try to put listing [[noop]] body in the LaTeX preamble.
#+name: make-noweb-result
#+RESULTS: make-noweb
#+begin_src latex -n :exports code :noweb yes :results raw
,#+latex_header: <<noop>>
#+end_src

[-- Attachment #4: mwe.diff --]
[-- Type: application/octet-stream, Size: 815 bytes --]

--- mwe-noweb-ok.org	2024-02-04 10:37:47.910099748 +0100
+++ mwe-links-ok.org	2024-02-04 10:44:45.280318649 +0100
@@ -15,7 +15,7 @@
 
 #+caption: Change after 1st :exports "both" to "code" and vice versa.
 #+caption: Execute this block after changing, but before LaTeX export.
-#+header: :wrap "src latex -n :exports both :noweb yes :results raw"
+#+header: :wrap "src latex -n :exports code :noweb yes :results raw"
 #+name: make-noweb
 #+begin_src emacs-lisp :exports both :eval no-export
 "#+latex_header: <<noop>>"
@@ -24,6 +24,6 @@
 #+caption: I try to put listing [[noop]] body in the LaTeX preamble.
 #+name: make-noweb-result
 #+RESULTS: make-noweb
-#+begin_src latex -n :exports both :noweb yes :results raw
+#+begin_src latex -n :exports code :noweb yes :results raw
 ,#+latex_header: <<noop>>
 #+end_src

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [BUG]: contradictory requirements between resolving links and noweb result block
  2024-02-04 11:02   ` gerard.vermeulen
@ 2024-02-05 12:32     ` Ihor Radchenko
  0 siblings, 0 replies; 4+ messages in thread
From: Ihor Radchenko @ 2024-02-05 12:32 UTC (permalink / raw)
  To: gerard.vermeulen; +Cc: Emacs orgmode

gerard.vermeulen@posteo.net writes:

> * mwe-noweb-ok
>
> ...
> Resolving the last link fails, because it has an org-id
> #+begin_src latex
> Listing \ref{noop}, \ref{make-noweb}, and \ref{orgd105392}.
> #+end_src
> while the caption of the linked listing has a user label.

Fixed, on main.
https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=f4414f5db

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-02-05 12:29 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-02 17:43 [BUG]: contradictory requirements between resolving links and noweb result block gerard.vermeulen
2024-02-02 20:12 ` Ihor Radchenko
2024-02-04 11:02   ` gerard.vermeulen
2024-02-05 12:32     ` Ihor Radchenko

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).