Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Настройки cleveref #496

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@
/*.eps
/*.pdf

## Files generated by xdvi
*.600pk

## Bibliography auxiliary files (bibtex/biblatex/biber):
*.bbl
*.bcf
Expand Down
2 changes: 2 additions & 0 deletions Dissertation/part1.tex
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,8 @@ \subsection{Нумерованные формулы}\label{subsec:ch1/sec3/sub3}
\end{align}
\end{subequations}

Список ссылок сортируется, после чего (по возможности) схлопывается до диапазонов: \cref{eq:equation2,eq:2p3,eq:subeq_2,eq:equation1,eq:subeq_1}.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хороший пример, интересный. Пригодится в любом случае. Но вот почему, если его вставить в старый код, то соберется тире без отбития пробелов (может так более правильно, хорошо бы ГОСТ по этому поводу найти), а с новым - с отбитием пробелами (ф-л. это видать заготовка под ф
ормул, как будто лишняя, действительно)?

old001

new001

Copy link
Collaborator

@Lenchik Lenchik Nov 25, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

rangemulti что ли там по-другому пробелы отрабатывает, или отсутствие ф-л. всё растянуло 🤔


\subsection{Форматирование чисел и размерностей величин}\label{sec:units}

Числа форматируются при помощи команды \verb|\num|:
Expand Down
1 change: 1 addition & 0 deletions Dissertation/part2.tex
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ \section{Длинное название параграфа, в котором
\end{figure}

На рисунке~\cref{fig:knuth_2-1} показан Дональд Кнут без головного убора.
%\Cref{fig:knuth_2-1} показывает Дональда Кнута без головного убора.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут как будто это просто работает по принципу "не падает". Может быть, сделаете какой-то пример, где будет использоваться как раз возможность из cleveref, что \Cref предназначен для вставки в начало предложения? Как раз может получиться какая-то заготовка для тех случаев, когда хотят, чтобы к рисункам и таблицам были ссылки вида Рисунок 5.5б или в Таблице 25 (как описано в конце https://github.com/AndreyAkinshin/Russian-Phd-LaTeX-Dissertation-Template/wiki/Customization#%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BD%D1%83%D0%BC%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8-%D1%80%D0%B8%D1%81%D1%83%D0%BD%D0%BA%D0%BE%D0%B2-%D0%B8-%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86).

На рисунке~\cref{fig:knuth_2}\subcaptionref*{fig:knuth_2-2}
показан Дональд Кнут в головном уборе.

Expand Down
2 changes: 1 addition & 1 deletion common/packages.tex
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@

%%% Изображения %%%
\usepackage{graphicx}[2014/04/25] % Подключаем пакет работы с графикой
\usepackage{caption} % Подписи рисунков и таблиц
%\usepackage{caption} % Подписи рисунков и таблиц; starting with version 1.4 the subcaption package [...] loads [the caption package] automatically © texdoc subcaption.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Руководствуясь максимой «explicit is better than implicit», я бы оставил эту строку

Copy link
Collaborator

@Lenchik Lenchik Nov 25, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Спасибо, что подсветили.
Я бы тут тоже, дочитав до этого места, оставил бы как было.
У меня тут машинка есть с пакетом не таким новым

(c:/texlive/2018/texmf-dist/tex/latex/caption/subcaption.sty
Package: subcaption 2018/05/01 v1.1-162 Sub-captions (AR)

Не то что бы я был за поддержку старья, но если это возможно, то почему бы и нет.

EDIT:
Запустил на той машинке. Не падает. И Cref вызов как будто тоже работает.

\usepackage{subcaption} % Подписи подрисунков и подтаблиц
\usepackage{pdfpages} % Добавление внешних pdf файлов

Expand Down
105 changes: 33 additions & 72 deletions common/styles.tex
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
parskip=.0pt, % отбивка между параграфами подписи
position=above, % положение подписи
justification=\tabjust, % центровка
indent=\tabindent, % смещение строк после первой
indention=\tabindent, % смещение строк после первой
labelsep=tabsep, % разделитель
singlelinecheck=\tabsinglecenter, % не выравнивать по центру, если умещается в одну строку
}
Expand All @@ -39,7 +39,10 @@
}

%%% Подписи подрисунков %%%
\DeclareCaptionSubType{figure}

% "For the environments figure & table [...] this [вызов \DeclareCaptionSubType] will be done automatically" © texdoc subcaption
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это с какой версии?

%\DeclareCaptionSubType{figure}

\renewcommand\thesubfigure{\asbuk{subfigure}} % нумерация подрисунков
\ifsynopsis
\DeclareCaptionFont{norm}{\fontsize{10pt}{11pt}\selectfont}
Expand Down Expand Up @@ -69,77 +72,35 @@
\else
\crefdefaultlabelformat{#2#1#3}

% Уравнение
\crefformat{equation}{(#2#1#3)} % одиночная ссылка с приставкой
\labelcrefformat{equation}{(#2#1#3)} % одиночная ссылка без приставки
\crefrangeformat{equation}{(#3#1#4) \cyrdash~(#5#2#6)} % диапазон ссылок с приставкой
\labelcrefrangeformat{equation}{(#3#1#4) \cyrdash~(#5#2#6)} % диапазон ссылок без приставки
\crefmultiformat{equation}{(#2#1#3)}{ и~(#2#1#3)}{, (#2#1#3)}{ и~(#2#1#3)} % перечисление ссылок с приставкой
\labelcrefmultiformat{equation}{(#2#1#3)}{ и~(#2#1#3)}{, (#2#1#3)}{ и~(#2#1#3)} % перечисление без приставки

% Подуравнение
\crefformat{subequation}{(#2#1#3)} % одиночная ссылка с приставкой
\labelcrefformat{subequation}{(#2#1#3)} % одиночная ссылка без приставки
\crefrangeformat{subequation}{(#3#1#4) \cyrdash~(#5#2#6)} % диапазон ссылок с приставкой
\labelcrefrangeformat{subequation}{(#3#1#4) \cyrdash~(#5#2#6)} % диапазон ссылок без приставки
\crefmultiformat{subequation}{(#2#1#3)}{ и~(#2#1#3)}{, (#2#1#3)}{ и~(#2#1#3)} % перечисление ссылок с приставкой
\labelcrefmultiformat{subequation}{(#2#1#3)}{ и~(#2#1#3)}{, (#2#1#3)}{ и~(#2#1#3)} % перечисление без приставки

% Глава
\crefformat{chapter}{#2#1#3} % одиночная ссылка с приставкой
\labelcrefformat{chapter}{#2#1#3} % одиночная ссылка без приставки
\crefrangeformat{chapter}{#3#1#4 \cyrdash~#5#2#6} % диапазон ссылок с приставкой
\labelcrefrangeformat{chapter}{#3#1#4 \cyrdash~#5#2#6} % диапазон ссылок без приставки
\crefmultiformat{chapter}{#2#1#3}{ и~#2#1#3}{, #2#1#3}{ и~#2#1#3} % перечисление ссылок с приставкой
\labelcrefmultiformat{chapter}{#2#1#3}{ и~#2#1#3}{, #2#1#3}{ и~#2#1#3} % перечисление без приставки

% Параграф
\crefformat{section}{#2#1#3} % одиночная ссылка с приставкой
\labelcrefformat{section}{#2#1#3} % одиночная ссылка без приставки
\crefrangeformat{section}{#3#1#4 \cyrdash~#5#2#6} % диапазон ссылок с приставкой
\labelcrefrangeformat{section}{#3#1#4 \cyrdash~#5#2#6} % диапазон ссылок без приставки
\crefmultiformat{section}{#2#1#3}{ и~#2#1#3}{, #2#1#3}{ и~#2#1#3} % перечисление ссылок с приставкой
\labelcrefmultiformat{section}{#2#1#3}{ и~#2#1#3}{, #2#1#3}{ и~#2#1#3} % перечисление без приставки

% Приложение
\crefformat{appendix}{#2#1#3} % одиночная ссылка с приставкой
\labelcrefformat{appendix}{#2#1#3} % одиночная ссылка без приставки
\crefrangeformat{appendix}{#3#1#4 \cyrdash~#5#2#6} % диапазон ссылок с приставкой
\labelcrefrangeformat{appendix}{#3#1#4 \cyrdash~#5#2#6} % диапазон ссылок без приставки
\crefmultiformat{appendix}{#2#1#3}{ и~#2#1#3}{, #2#1#3}{ и~#2#1#3} % перечисление ссылок с приставкой
\labelcrefmultiformat{appendix}{#2#1#3}{ и~#2#1#3}{, #2#1#3}{ и~#2#1#3} % перечисление без приставки

% Рисунок
\crefformat{figure}{#2#1#3} % одиночная ссылка с приставкой
\labelcrefformat{figure}{#2#1#3} % одиночная ссылка без приставки
\crefrangeformat{figure}{#3#1#4 \cyrdash~#5#2#6} % диапазон ссылок с приставкой
\labelcrefrangeformat{figure}{#3#1#4 \cyrdash~#5#2#6} % диапазон ссылок без приставки
\crefmultiformat{figure}{#2#1#3}{ и~#2#1#3}{, #2#1#3}{ и~#2#1#3} % перечисление ссылок с приставкой
\labelcrefmultiformat{figure}{#2#1#3}{ и~#2#1#3}{, #2#1#3}{ и~#2#1#3} % перечисление без приставки

% Таблица
\crefformat{table}{#2#1#3} % одиночная ссылка с приставкой
\labelcrefformat{table}{#2#1#3} % одиночная ссылка без приставки
\crefrangeformat{table}{#3#1#4 \cyrdash~#5#2#6} % диапазон ссылок с приставкой
\labelcrefrangeformat{table}{#3#1#4 \cyrdash~#5#2#6} % диапазон ссылок без приставки
\crefmultiformat{table}{#2#1#3}{ и~#2#1#3}{, #2#1#3}{ и~#2#1#3} % перечисление ссылок с приставкой
\labelcrefmultiformat{table}{#2#1#3}{ и~#2#1#3}{, #2#1#3}{ и~#2#1#3} % перечисление без приставки

% Листинг
\crefformat{lstlisting}{#2#1#3} % одиночная ссылка с приставкой
\labelcrefformat{lstlisting}{#2#1#3} % одиночная ссылка без приставки
\crefrangeformat{lstlisting}{#3#1#4 \cyrdash~#5#2#6} % диапазон ссылок с приставкой
\labelcrefrangeformat{lstlisting}{#3#1#4 \cyrdash~#5#2#6} % диапазон ссылок без приставки
\crefmultiformat{lstlisting}{#2#1#3}{ и~#2#1#3}{, #2#1#3}{ и~#2#1#3} % перечисление ссылок с приставкой
\labelcrefmultiformat{lstlisting}{#2#1#3}{ и~#2#1#3}{, #2#1#3}{ и~#2#1#3} % перечисление без приставки
\newcommand*{\SCSetCrefFormatBase}[2]{\csname #1format\endcsname{#2}} % имя настройки, тип ссылки
\newcommand*{\SCSetCrefLabelcrefFormats}[3]{% подимя настройки, тип ссылки, формат
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

подимя если это калька с subname, то правильней писать "подымя"

\SCSetCrefFormatBase{cref#1}{#2}{#3}% ссылка с приставкой
\SCSetCrefFormatBase{Cref#1}{#2}{#3}% ссылка с приставкой, стоящая в начале предложения
\SCSetCrefFormatBase{labelcref#1}{#2}{#3}% ссылка без приставки
}
\newcommand*{\SCSetCrefLabelcrefMultiFormats}[6]{% подимя настройки, тип ссылки, формат x4
\SCSetCrefFormatBase{cref#1}{#2}{#3}{#4}{#5}{#6}% ссылка с приставкой
\SCSetCrefFormatBase{Cref#1}{#2}{#3}{#4}{#5}{#6}% ссылка с приставкой, стоящая в начале предложения
\SCSetCrefFormatBase{labelcref#1}{#2}{#3}{#4}{#5}{#6}% ссылка без приставки
}
\newcommand*{\SCSetCrefLabelcrefFormatsForType}[3]{% тип ссылки, символ слева от ссылки, символ справа от ссылки
\SCSetCrefLabelcrefFormats{}{#1}{#2##2##1##3#3}% одиночная ссылка
\SCSetCrefLabelcrefFormats{range}{#1}{#2##3##1##4#3 \cyrdash~#2##5##2##6#3}% диапазон ссылок
\SCSetCrefLabelcrefMultiFormats{multi}{#1}{#2##2##1##3#3}{ и~#2##2##1##3#3}{, #2##2##1##3#3}{ и~#2##2##1##3#3}% перечисление ссылок
\SCSetCrefLabelcrefMultiFormats{rangemulti}{#1}{#2##3##1##4#3 \cyrdash~#2##5##2##6#3}{#2##3##1##4#3 \cyrdash~#2##5##2##6#3}{#2##3##1##4#3 \cyrdash~#2##5##2##6#3}{#2##3##1##4#3 \cyrdash~#2##5##2##6#3}% диапазон ссылок внутри перечисления ссылок
}
\newcommand*{\SCSetCrefLabelcrefFormatsForTypeSimple}[1]{\SCSetCrefLabelcrefFormatsForType{#1}{}{}}
\newcommand*{\SCSetCrefLabelcrefFormatsForTypeParen}[1]{\SCSetCrefLabelcrefFormatsForType{#1}{(}{)}}

% Листинг
\crefformat{ListingEnv}{#2#1#3} % одиночная ссылка с приставкой
\labelcrefformat{ListingEnv}{#2#1#3} % одиночная ссылка без приставки
\crefrangeformat{ListingEnv}{#3#1#4 \cyrdash~#5#2#6} % диапазон ссылок с приставкой
\labelcrefrangeformat{ListingEnv}{#3#1#4 \cyrdash~#5#2#6} % диапазон ссылок без приставки
\crefmultiformat{ListingEnv}{#2#1#3}{ и~#2#1#3}{, #2#1#3}{ и~#2#1#3} % перечисление ссылок с приставкой
\labelcrefmultiformat{ListingEnv}{#2#1#3}{ и~#2#1#3}{, #2#1#3}{ и~#2#1#3} % перечисление без приставки
\SCSetCrefLabelcrefFormatsForTypeParen{equation}
\SCSetCrefLabelcrefFormatsForTypeParen{subequation}
\SCSetCrefLabelcrefFormatsForTypeSimple{chapter}
\SCSetCrefLabelcrefFormatsForTypeSimple{section}
\SCSetCrefLabelcrefFormatsForTypeSimple{appendix}
\SCSetCrefLabelcrefFormatsForTypeSimple{figure}
\SCSetCrefLabelcrefFormatsForTypeSimple{table}
\SCSetCrefLabelcrefFormatsForTypeSimple{lstlisting}
\SCSetCrefLabelcrefFormatsForTypeSimple{ListingEnv}
Comment on lines +75 to +103

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

На мой взгляд, это изменение следует убрать.

Оригинальный код хоть и повторяющийся, позволяет легко найти и изменить настройку для определённого элемента. Для внесения изменений в принцыпе даже можно не открывать мануал -- синтаксис команд довольно прозрачный.

Новый код же прячет определения подписей внутрь команды. Что надо сделать,чтобы изменить, скажем, подпись только для таблицы, из нового кода решительно не ясно.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Согласен, читаемость прям сильно пострадала (не могу сказать, что раньше была хорошей, но как будто лучше чем в новом варианте). Всякие ООП приколы с наследованиями... уух 🤯
labelcrefrangeformat и подобные хотя бы из самого пакета cleveref, при желании разобраться, люди могут нагуглить откуда это и что, а вот SCSetCrefLabelcrefMultiFormats это же местное создание, с которым лет через пять и не разберешься...
Может быть, сможете собрать лучшее из всех миров? Сделать одну-две заготовки, которые не будут плодить копипасту, но прям хорошо управляемые и документированы. Я бы хотел сказзать, что "давайте вместе подумаем/поделаем" но тут прям очень тяжелое для восприятия получилось. Раньше хоть блоки по три отсылки типа #2#1#3, а теперь блоки по несколько, сиди гадай когда там один #, а когда два ставить: {#1}{#2##3##1##4#3.

\fi

%%% Настройки гиперссылок %%%
Expand Down