Dán nhãn và tham chiếu các phương trình LaTeX ở chế độ org


14

Điều này tương tự như xuất Org sang tham chiếu latex và HTML , nhưng đối với phương trình.

Tôi thích sử dụng các đoạn toán học LaTeX trong các tệp org của mình, như trong

* The Quadratic Equation
The roots of $ax^2 + bx + c$ are given by
\begin{equation}
\label{eq:1}
x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}
\end{equation}

According to Equation \ref{eq:1}, ...

Khi tôi xuất sang LaTeX, \ref{eq:1}chính xác sẽ biến thành một siêu liên kết đến phương trình. Nhưng tôi muốn đạt được các hành vi bổ sung sau:

  1. Trong tập tin org, tôi có thể nhấp vào văn bản \ref{eq:1}(văn bản không cần phải có \ref{eq:1}, tôi chỉ muốn một siêu liên kết) và được đưa đến phương trình. Chức năng này hiện diện cho các tiêu đề, vì [[The Quadratic Equation]]có thể nhấp vào trong chế độ Org.

  2. Khi tôi xuất sang HTML, tôi muốn lưu giữ các tham chiếu (thực ra, nhãn (1) thậm chí không hiển thị trong xuất HTML).

Có cách nào để hoàn thành việc này?


Về mặt kỹ thuật ... gói phương trình vào #+begin_src latex... #+end_srcvà sau đó, nếu bạn đặt #+name: eq:1#+label: eq:1, bạn sẽ có thể tham chiếu khối này theo cách bạn muốn, tức là sử dụng một liên kết [[eq:1][first equation]], nhưng vì một số lý do, nó không hoạt động với tôi (nhưng nó có thể là do những thay đổi tôi đã thực hiện).
wvxvw

@wvxvw Nếu bạn thay đổi hành vi thông qua advices, bạn chỉ có thể kiểm tra mà không thay đổi thông qua emacs -Q. Đương nhiên, điều này không có ích nếu bạn thay đổi các nguồn trực tiếp.
Tobias

@Tobias nah, tôi nhớ việc vá mã Org, cụ thể là một cái gì đó liên quan đến nó chèn \label{}vào môi trường nguyên văn, nhưng tôi cần khai thác các thay đổi của mình để đảm bảo đó là lỗi của tôi. Mặc dù vậy, nó sẽ giúp tôi, nếu ai đó có thể xác nhận rằng cách được đề xuất với #+namevv hoạt động.
wvxvw

@wvxvw Tại xuất html tôi nhận <pre>/ </pre>-Tags xung quanh equationmôi trường. Do đó, firefox hiển thị nguồn chứ không phải phương trình.
Tobias

@Tobias, phải, tôi hoàn toàn quên mất nó, bạn cũng cần by-backendmacro từ đây: orgmode.org/worg/org-contrib/babel/lacular/iêu
wvxvw

Câu trả lời:


15

Tôi đã phải chạy một số thử nghiệm, nhưng tôi đã quản lý để chạy một tệp nhỏ xuất chính xác sang cả latex và HTML, tôi chỉ thử nghiệm trong org 8.2.10, nhưng nó sẽ hoạt động trên các phiên bản khác.

Câu trả lời thực sự giống như trong xuất khẩu Org sang tham chiếu latex và HTML

Ở đây tôi có một ví dụ nhỏ

*  This is a latex experiment
so with the text...
#+NAME: code:1
#+BEGIN_SRC shell-script
echo hello world 
#+END_SRC
[[code:1]] is a reference to src block

#+NAME: eqn:1
\begin{equation}
    f(x) =  \sum\limits_0^\infty(f^{(n)}(x)|_{x=0} \cdot x)
\end{equation}

And this is an equation [[eqn:1]]

Đẹp, điều này làm việc cho tôi ra khỏi hộp.
Tobias

Điều này cũng hoạt động với tôi trong LaTeX, nhưng nó không hoạt động cho "ngoài luồng" trong HTML, vì phương trình thậm chí không có số (có thể một số tùy chọn Mathjax không được đặt). Bây giờ nếu chỉ có RefTeX sẽ hỗ trợ điều này, nhưng đó là một câu hỏi khác. Tôi sẽ đợi thêm một vài ngày nữa trước khi chấp nhận, để xem liệu có ai khác sẽ bấm chuông không :)
Kevin

Tôi đã chấp nhận, nhưng hãy xem câu trả lời của riêng tôi bên dưới (phiên bản sau của Org có hỗ trợ ngoài hộp).
Kevin

Tôi nhận được "tài liệu tham khảo không xác định" trong LaTeX; không hoạt động với tôi với Emacs 24.5.1 (chế độ Org 8.2.10)
Reb.Cabin

1
Điều này bằng cách nào đó có thể được mở rộng cho các môi trường AMS nhiều dòng như alignsubequations, nơi nhãn cụ thể cho các phần của phương trình?
kdb

5

Trên thực tế, có vẻ như chế độ Org 8.3.1 đã tích hợp hỗ trợ cho những gì câu hỏi đang hỏi; labelreflàm việc ra khỏi hộp.

Điều này đòi hỏi một để cập nhật chế độ Org thông qua trình quản lý gói; sau đó, dán (package-initialize)gần đầu tập tin khởi tạo.

BIÊN TẬP. Điều này không cho phép bạn nhấp vào \ref{...}và đi đến nhãn. Đối với điều đó, xin vui lòng xem câu trả lời được chấp nhận ở trên, hoặc sử dụng org-ref .


1
Nhưng bạn không được nhấp vào \ ref {.} Để đi đến \ nhãn {.}, Phải không?
rvf0068

Không tôi không thể. Vì vậy, bạn phải sử dụng câu trả lời của Joafigue ở trên hoặc xem nhận xét của tôi ở trên về github.com/jkitchin/org-ref . Tôi sẽ chỉnh sửa câu trả lời của tôi để phản ánh điều đó.
Kevin

1

Như được mô tả trong các liên kết nội bộ .

Bạn có thể sử dụng <<id>>để đặt id mục tiêu của mình và sử dụng [[id]]hoặc [[id][description]](Bạn có thể sử dụng C-c C-lđể chèn mục tiêu này) để tìm mục tiêu của mình.

Điều này làm việc cho tôi trong khi xuất sang HTML.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.