#emacs #latex #org-mode
#emacs #Латекс #org-режим
Вопрос:
Я экспортирую файл ORG в LaTeX с org-latex-listings
установленным значением t
. Файл содержит некоторые исходные списки, и я хочу вставить некоторые ссылки на них.
В сгенерированном TEX-файле имена ссылок, включенные в ref
, похоже, переводятся с помощью org-mode, но label
опция lstset
сохраняется как есть. Таким образом, pdflatex
не удается найти правильную ссылку и выдает сообщение LaTeX Warning: There were undefined references.
Вот пример MWE:
# latex_header: usepackage{listings}
First simple java program in listing [[thesourcelisting]]
# name: thesourcelisting
# caption: Simple java program
# BEGIN_SRC java
public static void main(String[] args){
System.exit(0);
}
# END_SRC
При экспорте в виде файла LaTeX ( C-c
C-e
l
t
) я получил
% Created 2016-10-18 mar 14:50
documentclass[11pt]{article}
usepackage[utf8]{inputenc}
usepackage[T1]{fontenc}
usepackage{fixltx2e}
usepackage{graphicx}
usepackage{grffile}
usepackage{longtable}
usepackage{wrapfig}
usepackage{rotating}
usepackage[normalem]{ulem}
usepackage{amsmath}
usepackage{textcomp}
usepackage{amssymb}
usepackage{capt-of}
usepackage{hyperref}
usepackage{listings}
author{alvaro}
date{today}
title{}
hypersetup{
pdfauthor={alvaro},
pdftitle={},
pdfkeywords={},
pdfsubject={},
pdfcreator={Emacs 25.1.2 (Org mode 8.3.6)},
pdflang={English}}
begin{document}
tableofcontents
First simple java program in listing ref{orgsrcblock1}
lstset{language=java,label=thesourcelisting,caption={Simple java program},captionpos=b,numbers=none}
begin{lstlisting}
public static void main(String[] args){
System.exit(0);
}
end{lstlisting}
end{document}
Исходное имя thesourcelisting
преобразуется в orgsrcblock1
в ref
команде, но не в lstset
команде.
Я использую GNU Emacs 25.1.2.
Ответ №1:
Попробуйте установить org-latex-prefer-user-labels
значение t
.
В строке документа переменной частично указано (do C-h v org-latex-prefer-user-labels RET
, чтобы получить все целиком):
Используйте предоставленные пользователем метки вместо внутренних, если они не равны нулю.
Если эта переменная не равна нулю, Org будет использовать значение свойства CUSTOM_ID, ключевое слово NAME или цель Org в качестве ключа для генерируемых команд label .
По умолчанию Org создает свои собственные внутренние метки во время экспорта LaTeX. Этот процесс гарантирует, что ключи label уникальны и действительны, но это означает, что ключи недоступны до начала процесса экспорта.