2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Если \label за пределами?
Сообщение21.12.2016, 20:39 
Всем доброго времени суток!
Есть проблема. Документы формируются в TeX путём подключения фрагментов через \input. Общий документ содержит все метки \label и ссылки \ref. Но есть ещё частные документы, которые могут ссылаться на метку во фрагменте, который к нему не подключен. В этом случае \ref возвращает ??, с чем не поспоришь. Хочется иметь механизм, который позволит в этом случае заменять ?? на заданный текст, а если метка присутствует, то иметь обычную ссылку (номер).
Всем спасибо!

 
 
 
 Re: Если \label за пределами?
Сообщение21.12.2016, 21:50 
Аватара пользователя
А повторная компиляция не помогает?
Я, например, сталкивался с тем, что для получения правильного содержания приходилось компилировать три раза, даже если весь документ в одном файле.
И у меня были документы, состоящие из нескольких файлов с перекрёстными ссылками. Никаких проблем я не заметил, кроме необходимости повторной компиляции.

 
 
 
 Re: Если \label за пределами?
Сообщение21.12.2016, 23:47 
Аватара пользователя
Судя по всему Вы компилируете документ, который состоит из частей, но в настоящий момент компилируете только одну из них. Для этой цели есть механизм \include и \includeonly (вместо \input)

https://en.wikibooks.org/wiki/TeX/includeonly

 
 
 
 Re: Если \label за пределами?
Сообщение21.12.2016, 23:55 
Аватара пользователя
Мне кажется, имеется в виду
http://tex.stackexchange.com/questions/47943/how-to-use-the-aux-file
Возможно, пакет xr — то, что нужно.

 
 
 
 Re: Если \label за пределами?
Сообщение22.12.2016, 00:02 
Аватара пользователя
RIP в сообщении #1179048 писал(а):
Возможно, пакет xr
— то, что нужно.

Если с hyperref, то лучше xr–hyper ; см напр http://dxdy.ru/post865150.html#p865150

 
 
 
 Re: Если \label за пределами?
Сообщение22.12.2016, 19:58 
Наверное меня не так поняли. Повторная компиляция не поможет так как фрагмент документа действительно отсутствует.
Пусть имеется полный документ, который описывает муравьёв, жуков и бабочек. В нём всё хорошо. Но вот я создаю документ с описанием муравьёв. Он имеет какие-то формализованные описания и включает содержательный фрагмент с описанием муравьёв. При этом этот документ содержит ссылку на описание жуков, а содержательный файл с описанием жуков тут не подключается. Хочется иметь что-то типа
\ifthenelse{ссылка_работает?}{смотри страницу \pageref{metka}}{описание жуков обсуждается в документе о жуках}.
Вот как написать выражение для ссылка_работает? Спасибо!

 
 
 
 Re: Если \label за пределами?
Сообщение22.12.2016, 20:25 
Аватара пользователя
Peters в сообщении #1179258 писал(а):
Наверное меня не так поняли.

Я Вас понял правильно. Используйте, как указывалось, механизм \include / \includeonly

В теле документа т.е. после \begin{document} напишите

Используется синтаксис LaTeX
\include{ants}
\include{beetles}
\include{batterfies}

(вместо \input)

и скомпилируйте. Теперь Вы хотите только про муравьев. Оставьте все как было, а в преамбуле т.е. до \begin{document} добавьте
Используется синтаксис LaTeX
\includeonly{ants}

 
 
 
 Re: Если \label за пределами?
Сообщение22.12.2016, 20:50 
Спасибо. Буду пробовать.

 
 
 [ Сообщений: 8 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group