O site web do Ansel é construído usando o Hugo 0.146 . Este é um gerador de sites estáticos que permite construir sites muito rápidos a partir de arquivos Markdown. Um modelo personalizado e muitos shortcodes personalizados foram construídos para o Ansel. Você precisará primeiro instalar a versão estendida do Hugo no seu computador, embora pequenas alterações possam ser feitas diretamente nos arquivos Markdown sem construir o site inteiro.
Obtendo o código-fonte
Este site web
Documentação do Ansel
A documentação do Ansel (Ansel Doc) é uma parte importante do site web do Ansel, mas como está sob uma licença diferente e é um fork da dtdocs GNU/GPL, não pode estar neste repositório. Queremos editar ambas como um conjunto, mas precisamos poder fazer commit delas separadamente em repositórios diferentes. Aqui está a solução.
A documentação do Ansel é obtida automaticamente como um módulo deste site no seu disco, como parte do script build-modules.sh acima, que também gera automaticamente as páginas traduzidas por meio de arquivos .po. Você a encontrará na pasta local do site, sob _vendor/github.com/aurelienpierreeng/ansel-doc/. Nenhum arquivo deve ser editado manualmente ali, isso é apenas para conteúdo gerado automaticamente.
Para editar a documentação do Ansel, faça
E então, edite o conteúdo (em inglês) de ansel-doc/content.
Edição interativa/Pré-visualização ao vivo
Iniciar o servidor de desenvolvimento
O Hugo permite que você abra uma versão renderizada do site, em um servidor de desenvolvimento local, para pré-visualizar suas alterações no seu navegador web.
Se você quiser editar apenas este site, execute a partir do diretório ./ansel-website:
1hugo server --disableFastRenderSe você quiser editar a documentação e ver os resultados em tempo real como parte deste site, depois de clonar a documentação (veja o passo anterior), execute a partir do diretório ./ansel-website:
1env HUGO_MODULE_REPLACEMENTS="github.com/aurelienpierreeng/ansel-doc -> ../../ansel-doc/" hugo server --disableFastRenderEste truque carregará dinamicamente o módulo da documentação a partir da sua pasta local em vez do Github, o que significa que as alterações locais feitas na documentação aparecerão imediatamente no site principal por meio do seu servidor de desenvolvimento.
Atualizando as traduções dos sites
Veja Traduzindo.
Editando arquivos
Abrir o Obsidian
Abra ./ansel-website/content como um cofre (vault) do Obsidian. O Obsidian é capaz de resolver symlinks de pastas como se fossem pastas locais, então basicamente vemos o site como um todo, o que facilita fazer links internos entre a documentação e o site no editor.
Trabalhar no Obsidian é significativamente mais agradável do que trabalhar no VS Code para editar texto “de texto” (em oposição a texto de código em fonte monoespaçada), já que o editor é menos sobrecarregado e as fontes monoespaçadas cansam a vista depois de algumas horas em parágrafos inteiros.
- O Markdown do Hugo não suporta call-outs do Obsidian . Você precisa usar as caixas de alerta mostradas acima como shortcodes do Hugo, mas elas não serão renderizadas no Obsidian,
- O Hugo não suporta wikilinks do Obsidian , então você terá que se ater aos links Markdown usuais com caminhos relativos. Dito isso, o Obsidian fornece autocompletar de caminhos para eles.
- O Obsidian não suporta listas de definição do Markdown , mas você ainda pode usá-las (elas simplesmente não serão renderizadas nas pré-visualizações),
- O Obsidian não suporta IDs de cabeçalhos do Markdown ,
Porém:
- O Obsidian suporta tags do Hugo no frontmatter Yaml, e as implementa de uma forma muito mais agradável que dá muito mais sentido ao encadeamento horizontal de conteúdo,
- O Obsidian suporta aliases do Hugo para redirecionamento de páginas,
Lidando com links quebrados
Existe uma extensão para isso : https://github.com/graydon/obsidian-dangling-links . Uma vez instalada, ela mostra os links que não apontam para nenhum arquivo existente em todo o cofre, incluindo o site principal e a documentação :

Na visualização de grafo de nós, os links quebrados também aparecem pelo seu caminho ../../stuff.md em vez de aparecerem pelo seu nome de arquivo.
No editor de cada página, é possível ver quais páginas estão apontando para a página atualmente aberta, incluindo a âncora do cabeçalho, o que é útil antes de alterar cabeçalhos e, portanto, destruir links internos :

Melhorando o entrelaçamento de conteúdo
O encadeamento horizontal, por meio de tags e links internos, é tão importante quanto o encadeamento vertical, seguindo árvores hierárquicas.
O Obsidian pode mostrar as tags disponíveis em todo o cofre para reutilização:

Ele também pode mostrar os melhores candidatos a links internos para cada palavra-chave na página, sob a seção recolhível “Unlinked mentions”:

Verificando a organização do conteúdo
Muitas vezes é difícil acompanhar o encadeamento de cabeçalhos em uma página Markdown, ao usar um editor de código típico. O Obsidian tem um widget de “outline” que permite manter o sumário à vista enquanto se escreve, para garantir que a hierarquia de cabeçalhos seja consistente :

Diretrizes
A documentação não é um manual nem um curso. Ela deve responder às perguntas :
- “o que a interface gráfica está fazendo ?”
- “como posso configurar o software ?”
- “quais são os gargalos, ressalvas, limitações e armadilhas ?”.
A documentação espera que o leitor saiba o que fazer e explicará como fazer. Fluxos de trabalho de ponta a ponta, tutoriais, contexto científico etc., ou seja, o quê e o porquê, vão no site (recursos, fluxos de trabalho).
Pasta de conteúdo
A pasta de conteúdo está localizada no diretório content/ e a estrutura de pastas e subpastas produzirá a estrutura de seções e subseções no site. Os arquivos são escritos em Markdown e terminam com a extensão .md. Cada arquivo deve ter o seguinte cabeçalho (frontmatter):
- O título é obrigatório. Por favor, use maiúsculas iniciais, como na língua real.
- A data é definida uma única vez na criação da página e nunca deve mudar depois.
- Atualize a data
lastmodcom a data de hoje toda vez que você atualizar um arquivo, e adicione-a se não estiver presente. Na internet, todo conteúdo é perecível e isso ajuda os leitores a deduzir se a página ainda é relevante no momento da leitura ou não. draftdefinido comotruesignifica que a página estará no repositório (no código-fonte), mas não aparecerá no front-end do site. Definido comofalse, a página fica visível no front-end.- As
tagssão opcionais, mas bem-vindas. O conteúdo é, por padrão, organizado verticalmente (hierarquicamente). As tags ajudam a criar links horizontais (temáticos) entre páginas. Tags relevantes poderiam ser “processamento de filme”, “HDR”, “monocromático” etc. Reutilize tags existentes prioritariamente. As tags devem sempre ser uma lista, mesmo quando há apenas uma (caso contrário, a construção do Hugo quebra).
Links internos
Os links internos devem usar caminhos relativos a partir do arquivo atual sempre que possível, o que não é o comportamento padrão do Hugo. O objetivo é poder seguir links relativos no sistema de arquivos local a partir de qualquer editor de texto moderno, como em qualquer arquivo README.md. Usamos nosso próprio código para reconectar esses links relativos aos arquivos com a estrutura do site Hugo (após a compilação).
Ao construir o site, os links internos são verificados e um erro crítico (abortando a compilação) será lançado se uma página não puder ser encontrada a partir dos links internos. Você precisa ficar de olho neles. Erros não críticos (ou seja, WARNING [languages] REF_NOT_FOUND) também podem ser mostrados em um console porque distorcemos o linker do Hugo de uma forma não padrão, mas esses podem ser desconsiderados.
Exemplo de links internos:
Âncoras de página
Se você fizer links para âncoras de página, como /my-post.md#some-heading, certifique-se de não inserir uma barra / entre o slug da página e a hashtag # no seu código Markdown, ou então o arquivo será tomado por um diretório e não será encontrado.
Links absolutos
Digamos que você queira criar um link para a página de suporte. Aqui estão todas as possibilidades de criar um link para essa página:
[support](/support/)-> válido para o Hugo, mas funciona apenas depois que o site é compilado, então não pode ser depurado facilmente no editor de código. por favor evite[support](/support.md)-> inválido para o Hugo, funcionará como efeito colateral do nosso processamento personalizado de links, mas não pode ser depurado de forma alguma no editor de código. por favor evite[support](./support.md)-> inválido para o Hugo, funciona como pretendido pelo nosso processamento personalizado de links se chamado a partir da página de índice, por exemplo. por favor use isto[support](../support.md)-> inválido para o Hugo, funciona como pretendido pelo nosso processamento personalizado de links se chamado a partir de uma subpasta do site, como/contribute. por favor use isto
Se uma página está no que o Hugo chama de pacote de página ou de seção , por favor use o link para o seu arquivo index.md ou _index.md.
- Faça:
- Não faça (mesmo que tecnicamente funcione):
Links externos
Os links externos não são verificados porque isso levaria tempo demais na construção, e a construção pode acontecer sem acesso à rede de qualquer forma. Sempre use https:// nas URLs externas quando possível.
Títulos (cabeçalhos)
Os títulos H1 (codificados como # Title em Markdown) são reservados para títulos de página e cada página deve ter exatamente um H1. A darktable-doc errou feio aqui ao usar H1 como títulos de seção, isso é tanto um erro de SEO quanto de acessibilidade. A web é semântica porque é projetada tanto para crawlers e leitores de tela quanto para humanos.
Esteja ciente de que o Hugo gera automaticamente links de âncora para os cabeçalhos, usando o texto do cabeçalho. Assim, evite usar símbolos nos cabeçalhos, especialmente barras (invertidas), que vão bagunçar os links de âncora.
Esteja ciente também de que essas âncoras de cabeçalhos podem ser usadas em outras páginas para fazer links diretos. Alterar o texto de um cabeçalho quebrará sua âncora e pode quebrar links externos. Para evitar quebrar âncoras em links externos, você pode alterar o texto do cabeçalho, mas forçar seu ID para o anterior, assim:
1### My New Heading {#my-old-heading}Isso preservará os links externos para /my-post/#my-old-heading. Veja os detalhes…
Incorporando imagens
O Hugo trata as imagens como assets de página. Existem assets globais, para imagens reutilizadas em várias páginas, armazenados em uma subpasta assets/ da pasta principal do código-fonte, e assets locais, armazenados na mesma pasta que a página que os utiliza.
Assim como nos links internos, tudo precisa ser vinculado relativamente ao código-fonte tal como hospedado no sistema de arquivos local, não relativamente ao HTML compilado.
Veja como traduzir imagens.
Capturas de tela
As capturas de tela são o básico de qualquer documentação de software de front-end. Os mantenedores da darktable-doc as recusam sob a alegação de que não podem ser traduzidas e que logo ficarão obsoletas dada a frequência das mudanças na interface gráfica, mas isso é um enorme erro pedagógico. Mesmo no idioma errado, as capturas de tela ajudam a ver o que procurar na janela. Use-as. Elas ficarão obsoletas e talvez não sejam traduzidas, assim como o resto do texto.
Info, Avisos, Alertas
O tema Ansel do site principal fornece shortcodes para criar alertas e caixas de informação usando o sistema de templates do Hugo. Aqui está o código:
O conteúdo das caixas também pode usar Markdown.
Controles deslizantes de antes/depois
Novamente, usando o sistema de templates do Hugo, você pode exibir controles deslizantes de antes/depois onde ambas as imagens são sobrepostas. Isso se assemelha ao recurso de snapshot da sala escura do Ansel e do darktable e pode explicar de forma eficiente o efeito de módulos e configurações de uma maneira que os usuários podem reproduzir na interface gráfica. Ambas as imagens de antes e depois precisam ter o mesmo tamanho em pixels.
Matemática
A documentação suporta MathJax configurado para suporte à sintaxe LaTeX. Embora o objetivo não seja escrever literatura científica, existem alguns algoritmos feitos de multiplicações e adições que são mais facilmente mostrados como equações em vez de escrever blocos de texto.
O LaTeX inline deve ser delimitado por $, e as equações em bloco delimitadas por $$. Se você usar LaTeX, precisa notificar o Hugo para anexar o script do Mathjax na página definindo latex: true no cabeçalho/frontmatter da página Markdown.
Grafos Mermaid
O Ansel faz uso intenso de pipelines, e estes são melhor descritos com fluxogramas. O Mermaid.js agora é suportado nativamente no Github e dentro do Visual Studio Code e é ótimo para esse propósito. Você pode experimentá-lo visualmente aqui e copiar e colar o código dos grafos dentro de blocos de código Markdown assim:
Isso renderiza:
graph TD
A[Christmas] -->|Get money| B(Go shopping)
B --> C{Let me think}
C -->|One| D[Laptop]
C -->|Two| E[iPhone]
C -->|Three| F[fa:fa-car Car]
Os ícones do Font Awesome v5 são suportados pelo site principal e pela documentação do Ansel, usando a sintaxe fa:fa-YOUR-ICON-CODE como mostrado no exemplo acima. Use o mecanismo de busca do Font Awesome v5 para obter o código fa- dos ícones que você pode usar.
Os grafos Mermaid são renderizados no lado do cliente em SVG no tamanho de exibição e podem ser traduzidos como texto. O Hugo está configurado para detectar esses grafos automaticamente e carregar a biblioteca javascript apenas quando necessário. O Github também pode renderizar grafos Mermaid nativamente, ao exibir arquivos Markdown.
Alterando a URL das páginas
Às vezes, faz sentido reorganizar o conteúdo e alterar o caminho de algumas páginas. Para não quebrar links externos, você deve registrar a url antiga da nova página como um alias, no frontmatter da nova página assim:
Notas
Feed RSS
A documentação tem um feed RSS localizado, por enquanto :
Isso é incomum e serve para ajudar os usuários a acompanhar as mudanças e evoluções, ao assinar o feed RSS ou ao conectá-lo com bots.
A data das páginas de documentação definida no feed RSS é o parâmetro lastmod, ou seja, o horário da última modificação. Como o RSS não possui uma jast modified date, é o melhor que encontrei por enquanto.
Translated from English by : Claude. In case of conflict, inconsistency or error, the English version shall prevail.