Permutações na prática
Permutações embaralham. Enumerações escolhem. A maior parte da variedade real de um template bem escrito vem das permutações — não de empilhar sinônimos. Este guia cobre a sintaxe, as regras de separador e o padrão que quase todo autor deixa passar: listas seriais em títulos e cabeçalhos.
Permutação simples
[a|b|c]
Padrões:
- todos os elementos entram;
- a ordem é embaralhada a cada render;
- o separador é um espaço simples.
Exemplos de saída: a b c, c a b, b c a.
Atalho de separador único
Para definir o separador (e o lastsep) de uma vez:
[< and >a|b|c]
Saídas possíveis: a and b and c, c and a and b. O atalho atribui a mesma string a sep e a lastsep, então todas as junções ficam iguais.
Configuração completa
A forma verbosa dá controle total:
[<minsize=2;maxsize=4;sep=", ";lastsep=" and ">a|b|c|d|e]
Regras:
minsize— menor número de elementos a emitir;maxsize— maior número de elementos a emitir;sep— junta todos os elementos menos o último par;lastsep— junta os dois últimos elementos (para uma saída natural do tipo "A, B and C").
Omita um dos tamanhos e o outro se ajusta sozinho:
- só
minsizedefinido →maxsizevira "todos os disponíveis"; - só
maxsizedefinido →minsizevira 1; - ambos maiores que a quantidade de elementos → são limitados ao total;
- o motor não consegue escolher zero itens. Use um ramo vazio em volta para "talvez nenhuma lista" (veja abaixo).
Separadores por elemento
Se você precisa de mais controle do que um sep/lastsep global, um elemento pode carregar o separador dele:
[<, >Visa|Mastercard < and >|Skrill]
Aqui:
- o separador global é
", "; - o elemento depois de
Mastercardcarrega o próprio separador local" and ".
Separadores por elemento são raros, mas úteis quando um espaço específico pede outro conector.
Espaçamento automático do separador
Separadores em forma de palavra ganham espaços automáticos dos dois lados:
[<and>a|b|c]
se comporta como:
a and b and c
Separadores de pontuação não ganham espaçamento automático:
[<,>a|b|c]
produz:
a,b,c
Se você quer um espaço depois da vírgula, inclua-o explicitamente: [<, >a|b|c].
Listas opcionais
Como uma permutação não emite zero itens, o jeito de deixar uma lista "talvez ausente" é envolver a permutação inteira num ramo de enumeração vazio:
{|[<minsize=2;maxsize=3;sep=", ";lastsep=" and ">Postgres|Redis|Kafka|MongoDB]}
Saídas possíveis: Postgres and Redis, Kafka, Postgres and Redis ou uma string vazia. Lembre de tratar o espaço em volta — mantenha o espaço dentro do ramo quando a lista puder sumir.
Listas seriais em títulos, descrições e cabeçalhos
Este é o padrão que quase todo autor deixa passar. Títulos e cabeçalhos H2/H3 costumam prometer vários temas paralelos de seção:
Benefits, Integrations, and How to Get Started
Isso não é uma string congelada — é uma lista de três blocos paralelos de manchete. Reconheça o padrão e escreva como permutação:
[<minsize=3;maxsize=3;sep=", ";lastsep=", and ">Benefits|Integrations|How to Get Started]
Bom, dentro de uma moldura de cabeçalho com espaço para a marca:
%product_name%: [<minsize=3;maxsize=3;sep=", ";lastsep=", and ">Benefits|Integrations|How to Get Started]
Ruim:
%product_name%: {Benefits, Integrations, and How to Get Started|A Complete Guide for Teams}
Por que a segunda forma é mais fraca:
- trata uma lista estruturada como uma string congelada;
- perde o padrão de separador que o motor já oferece;
- empurra o modelo para alternância de strings inteiras em vez de estrutura reutilizável;
- produz um punhado de variantes onde uma permutação produziria dezenas.
Use o padrão de lista serial para:
- títulos que enumeram três ou mais promessas;
- meta descriptions que citam vários blocos do artigo;
- cabeçalhos H1/H2/H3 que listam temas paralelos de seção.
Não use quando a sequência é um procedimento e precisa manter a ordem:
Create an account, verify email, and make a deposit
Isso é uma sequência de passos, não uma lista de manchete livremente permutável.
A caixa dos cabeçalhos é manual
A regra usual para o corpo do texto diz que os elementos de uma permutação devem começar em minúscula, porque o pós-processamento capitaliza o início das frases.
Essa regra não vale para cabeçalhos seriais em estilo de título. Cada elemento já precisa vir escrito na caixa em que será exibido:
[<minsize=3;maxsize=3;sep=", ";lastsep=", and ">Benefits|Integrations|How to Get Started]
e não:
[<minsize=3;maxsize=3;sep=", ";lastsep=", and ">benefits|integrations|how to get started]
O pós-processamento não vai converter uma lista de manchete separada por vírgulas para title case por você.
Erros comuns com permutações
| Não faça | Por quê | Faça |
|---|---|---|
| Fixar no código uma lista de 4+ itens | A ordem fixa vira pegada em todos os renders. | Use uma permutação, mesmo com minsize=maxsize se o conjunto for obrigatório. |
| Congelar uma manchete serial como uma única string | Perde o padrão de separador e encolhe drasticamente o espaço de variantes. | Emita como permutação com sep e lastsep. |
Usar minsize=0 | O motor limita o mínimo a 1; você fica com uma expectativa quebrada em silêncio. | Envolva a lista em {|[...]} para "talvez nenhuma lista". |
Terminar elementos com ponto final enquanto sep=". " | Pontuação dobrada: "fact. . next fact". | Deixe o separador colocar a pontuação; mantenha os elementos sem ela. |
| Esquecer os espaços em separadores de palavra que o motor já preenche | Renderiza aandb ao tentar consertar um problema que não existia. | Confie no espaçamento automático para separadores de palavra; acrescente espaços só nos de pontuação. |
| Escrever elementos com caixa misturada | O texto renderizado ganha capitalização de aparência aleatória. | Minúscula no corpo do texto, title case em cabeçalhos. Consistente dentro de uma permutação. |
| Fazer de cada elemento uma frase inteira com sujeito próprio | O fluxo serial quebra — cada elemento lê como um parágrafo novo. | Mantenha os elementos no nível de sintagma; deixe o sujeito preso fora da permutação. |
Checklist de permutações
- Toda lista de 3+ itens é uma permutação, não uma string congelada.
- Listas seriais em títulos e cabeçalhos usam permutações com
sep/lastsepexplícitos. - Listas opcionais estão envolvidas em
{|[...]}, e não tentadas comminsize=0. - Os elementos não terminam com pontuação que o separador já fornece.
- Permutações de cabeçalho estão escritas na caixa de exibição.
- Permutações do corpo do texto começam em minúscula quando o pós-processamento vai capitalizar.
- Todos os elementos de uma permutação são gramaticalmente paralelos entre si.
Com a estrutura no lugar, o passo final é a gramática: sinonimização sem quebrar a gramáticaEN.