излучатель: не увеличивает номер кадра для «полностью ограниченных» кадров

#latex #beamer

#Латекс #излучатель

Вопрос:

Мои документы часто содержат «полностью ограниченные» фреймы этой формы:

 begin{frame}<0>
    Lorem ipsum dolor.
end{frame}
  

Из-за <0> в конце первой строки фреймы, подобные этому, делают
не отображается в документах, которые я создаю с помощью pdflatex или xelatex.
Но они все равно приводят к увеличению счетчика framenumber, что приводит
к странным результатам. Вот пример:

 documentclass[xelatex]{beamer}
begin{document}
  setbeamertemplate{footline}{hfillinsertframenumber}
  begin{frame}<0>{Frame A}
  end{frame}

  begin{frame}{Frame B}
  end{frame}

end{document}
  

Когда я обрабатываю этот документ с помощью xelatex, я получаю документ PDF
содержит один фрейм. Номер фрейма в нижней строке фрейма равен
2. Я бы хотел, чтобы это было 1. Я мог бы вручную сбросить счетчик кадров
после каждого ограниченного фрейма, но в больших документах со многими такими
фреймы, это проблема. Есть ли какой-либо способ остановить ограниченные кадры
из-за увеличения счетчика?

Комментарии:

1. Комментарий для всех, кого сюда привела поисковая система: вы можете найти целое сообщество на TeX StackExchange , где ни один вопрос, связанный с TeX, не является слишком маленьким. Есть куча вопросов к бимеру .

Ответ №1:

Beamer теперь автоматически исключает кадры, которые скрыты с помощью <0> , из увеличения счетчика кадров. Таким образом, решение теперь невероятно простое:

ничего не делай 🙂

 documentclass{beamer}

setbeamertemplate{footline}[frame number]

begin{document}

  begin{frame}<0>
  frametitle{Frame A}
  end{frame}

  begin{frame}
  frametitle{Frame B}
  end{frame}

end{document}
  

введите описание изображения здесь

Решение до версии v3.65:

Кадры могут быть исключены из счетчика кадров с помощью noframenumbering опции:

 documentclass{beamer}

setbeamertemplate{footline}[frame number]

begin{document}

  begin{frame}<0>[noframenumbering]
  frametitle{Frame A}
  end{frame}

  begin{frame}
  frametitle{Frame B}
  end{frame}

end{document}
  

Ответ №2:

Вы могли бы создать новый макрос среды, содержащий исправление счетчика:

 newenvironment{restrictedframe}[1]
  {begin{frame}<0>{#1}}
  {end{frame} addtocounter{framenumber}{-1}}
  

Комментарии:

1. Спасибо. Это работает, при условии, что я изменяю addtocounter{framecounter} на addtocounter{framenumber} .

2. В текущей версии beamer нумерация будет отключена, потому что теперь кадры с <0> автоматически исключаются из увеличения framecounter. Также есть много ситуаций, в которых beamer должен действительно видеть end{frame} и будет волноваться, если вы спрячете его в пользовательской среде. Если вам действительно, действительно необходимо это сделать, по крайней мере, используйте environmnet ключ, чтобы сообщить beamer об этом:

3. newenvironment{restrictedframe}[2][] {begin{frame}<0>[environment=restrictedframe,#1]frametitle{#2}} {end{frame}}