Quando queremos ter dois temas diferentes em um documento Quarto HTML, podemos usar um botão para alternar entre o modo claro e escuro, por exemplo. Padrão, o botão fica no canto superior direito do documento. Eu gostaria de ter este documento abaixo do toc do documento. Aqui está um código reproduzível:
---
title: "Change position theme button"
format:
html:
toc: true
theme:
light: default
dark: darkly
---
## Chapter
Some text to make it reproducible
### Test
Saída:
Como você pode ver, o botão de troca de tema está no canto superior direito. Eu estava pensando em como podemos colocá-lo abaixo do toc?
Isso é um pouco mais complicado do que eu esperava, pois o botão não é colocado após o índice (TOC) no DOM. Você pode alterar as regras CSS, mas, embora funcione para o exemplo, se você tiver títulos suficientes para que seu TOC precise rolar, o botão de alternância não flutuará.
Para conseguir a flutuação, precisamos mudar a estrutura do DOM para colocar o botão de alternância diretamente após o TOC. O botão de alternância é adicionado dinamicamente após a página ser carregada, então precisamos de algum JavaScript que observe as alterações feitas no DOM, por exemplo, um MutationObserver .
A primeira coisa a fazer é adicionar
include-in-header: move-toggle.html
ao seu Quarto yaml. Então criemove-toggle.html
o que procura por mudanças no DOM e move o botão se ele encontrar (e o índice também é carregado):Saída
Modo claro
Modo escuro
Documento Quarto completo
Para reprodutibilidade, aqui está o
qmd
arquivo completo. A única linha adicional éinclude-in-header: move-toggle.html
.