![Проблема с подписью к рисунку и таблице](https://rvso.com/image/330734/%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0%20%D1%81%20%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D1%8C%D1%8E%20%D0%BA%20%D1%80%D0%B8%D1%81%D1%83%D0%BD%D0%BA%D1%83%20%D0%B8%20%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B5.png)
Я пишу диссертацию с использованием латекса. У меня возникла следующая ошибка при добавлении подписи к рисунку:
l. 91 \caption{Chevauchement et ligature}
I suspect you've forgotten a `}', causing me to apply this control sequence to too much text.
когда я пишу тот же код в новом файле, он работает, но не в моей диссертации. Любая помощь, пожалуйста?
решение1
Поскольку
pfe
и./styles/srcltx
отсутствуют в моей системе, я изменил первое на book и удалил второе. Я создал папку chapters и подпапку chap1. Как показано на снимке экрана ниже, результат компилируется в моей системе, и появляется рисунок (я использовал фиктивный рисунок). Кроме того, что кажется проблемами кодировки, в вашем MWE нет ошибок.imgur.com/GRtTOy7
Действительно, оскорбительный фрагмент находится в файле класса.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % caption %%% ВНИМАНИЕ CE N'est PAS force supported by all les % distrib LateX %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{caption2}
\captionstyle{centerlast}
\renewcommand\captionfont{\footnotesize}
\renewcommand\captionlabelfont{\bfseries\itshape}
%\setcaptionmargin{\leftmargini}
%\setlength\captionindent{\parindent}
\renewcommand\captionlabeldelim{~---}
\onelinecaptionstrue
\setcaptionwidth{12.9999cm}
Комментарий гласит:
подпись ВНИМАНИЕ ЭТО НЕ обязательно поддерживается всеми дистрибутивами LateX.
Я попытался просмотреть документацию пакета для caption2
, который, как мне показалось, был источником проблемы, и в разделе совместимости я нашел:
Подпись к пакету и его экспериментальная версия, однако настоящий Вариант подпись2 исходит из внутренней концепции, которая может быть полезна, поскольку здесь может быть обеспечена полная совместимость. Однако этот пакет должен содержать данные caption2.sty, поэтому при загрузке других документов, которые содержатся в пакете caption2, их можно будет удалить.
что Google переводит как:
Пакет caption и его экспериментальный и теперь устаревший вариант caption2 концептуально слишком различны, чтобы обеспечить полную совместимость. Поэтому этот пакет все еще находится в файле caption2.sty, так что старые документы, использующие пакет caption2, все еще будут компилироваться.
Итак, вопрос: почему ваш класс использует устаревшую версию пакета? Пожалуйста, обновите этот класс так, чтобы он этого не делал, и я уверен, что проблема исчезнет.
Обновлять
Я изменил проблемный фрагмент в классе, следуя инструкциям в документации, и теперь он выглядит так:
\RequirePackage[font=footnotesize,labelfont={bf,it}]{caption}
\captionsetup{justification=centerlast,singlelinecheck=on}
%\renewcommand\captionfont{\footnotesize}
%\renewcommand\captionlabelfont{\bfseries\itshape}
%\setcaptionmargin{\leftmargini}
%\setlength\captionindent{\parindent}
\newcommand\captionlabeldelim{~---}
%\onelinecaptionstrue
\setcaptionwidth{12.9999cm}
и все компилируется, и формат кажется более или менее таким же, как и оригинал.
Кстати, ошибка, которую я получил, была совершенно другой:
Runaway argument?
{\parbox [b]\captionlinewidth {\strut \@nameuse {caption@@@centerlast\ETC.
./chapters/chap1.tex:15: Paragraph ended before \@gobble was complete.
<to be read again>
\par
l.15 ...ns possibles du hamza en association avec}
Кажется, в вашем документе все еще есть проблемы с кодировкой. TeXShop
предупредил меня, что он должен открыть один из ваших документов в IsoLatin8
кодировке. Пожалуйста, убедитесь, что все в той же кодировке, лучше всего, если UTF-8
. На данный момент выходной pdf выглядит так:
Обновление 2
Почему ваш класс загружается inputenc
с кодировкой latin1
, когда utf8
это определенно всегда лучше, и latin1
вызывает проблемы с кодировкой? И вы знали, что это так? Судя по тому, как вы вызвали его из вашего документа, я полагаю, что вы не знали. Пожалуйста, возьмите ваш класс и измените параметр кодировки с inputenc
на latin1
, utf8
и проблемы с кодировкой (или большинство из них) исчезнут. С таким результатом:
И поскольку я редактирую, вот мой теперь уже удаленный комментарий:
Кроме того, LaTeX не особенно любит извлекать пакеты из указанных папок, поскольку, похоже, имя папки является частью имени пакета, и когда он находит файл, он говорит: "НЕТ, это не обеспечивает,
./styles/pfe
а простоpfe
" ;). ?? для ссылки на рисунок, очевидно, проясняется при второй компиляции.
И в версии с исправленной кодировкой это прояснилось.