Imagens e links quebrados
Quando as imagens somem e os links param de abrir: diagnóstico de caminhos e conserto em massa.
Imagens e links quebrados🔗
Sintoma. Você moveu a pasta, trocou de máquina ou recebeu um mapa de alguém, e as imagens sumiram ou os links não abrem nada.
O que você vai aprender
- Entender por que caminhos absolutos quebram ao mover ou compartilhar
- Converter um mapa existente para caminhos relativos
- Organizar a pasta de forma que o mapa vire uma unidade portátil
Causa. Caminhos absolutos.
Entendendo o problema🔗
Um link absoluto aponta para um lugar específico do disco:
/home/ana/projetos/aurora/img/diagrama.png
Isso funciona na máquina da Ana, na pasta original. Em qualquer outro lugar, não.
Um link relativo aponta a partir do mapa:
img/diagrama.png
Isso funciona onde quer que a pasta esteja, desde que a estrutura interna se mantenha.
Diagnóstico🔗
# Quantos links absolutos existem?
grep -o 'LINK="[^"]*"' mapa.mm | grep -c '="/\|="[A-Z]:\\'
# Quais são?
grep -o 'LINK="[^"]*"' mapa.mm | sort -u
Links começando com / (Unix) ou C:\ (Windows) são absolutos.
Conserto: ativar caminhos relativos🔗
Primeiro, evite repetir o problema:
- Ferramentas → Preferências → Ambiente → Arquivos
- Ative a opção de salvar links como relativos.
A partir daí, links novos nascem relativos.
Conserto: converter os existentes🔗
Caminho 1 — pelo Freeplane. Reabra cada link (Ctrl+K) e escolha o arquivo de novo, agora com a opção de relativos ativa. Correto, mas tedioso.
Caminho 2 — em massa, por script de texto. Como o .mm é XML, um sed resolve:
cp mapa.mm mapa.mm.bak
sed -i 's|LINK="/home/ana/projetos/aurora/|LINK="|g' mapa.mm
Confira antes de confiar:
grep -o 'LINK="[^"]*"' mapa.mm | sort -u
xmllint --noout mapa.mm && echo válido
Caminho 3 — por script Groovy, quando a conversão exige lógica:
def base = node.map.file.parentFile.toPath()
node.map.root.branch.each { n ->
def l = n.link?.text
if (l && l.startsWith('/')) {
try {
n.link.text = base.relativize(new File(l).toPath()).toString()
} catch (ignored) {
n.icons.add('messagebox_warning') // marca o que não deu
}
}
}
Os nós marcados com o ícone de aviso são os que apontavam para fora da pasta e precisam de decisão manual.
Organizando a pasta🔗
A estrutura que sobrevive a mudanças:
projeto/
├── mapa.mm
├── img/
│ ├── diagrama.png
│ └── foto.jpg
└── docs/
├── contrato.pdf
└── especificacao.odt
Tudo dentro de uma pasta, referenciado relativamente. A pasta inteira é a unidade que você copia, envia, versiona e sincroniza.
Verificando links quebrados🔗
Um script que testa se cada arquivo referenciado existe:
def base = node.map.file.parentFile
def quebrados = []
node.map.root.branch.each { n ->
def l = n.link?.text
if (l && !l.startsWith('http') && !l.startsWith('mailto') && !l.startsWith('#')) {
def f = l.startsWith('/') ? new File(l) : new File(base, l)
if (!f.exists()) { quebrados << n; n.icons.add('messagebox_warning') }
}
}
c.statusInfo = "${quebrados.size()} link(s) quebrado(s)"
Rode-o depois de qualquer reorganização de pastas.
Imagens: embutir como alternativa🔗
Quando o mapa precisa ser um arquivo único — enviado por e-mail, anexado a um chamado —, embutir resolve, ao custo do tamanho.
O formato .mmx faz isso de forma organizada: empacota mapa e anexos num único arquivo, sem inchar o XML com base64.
Ver Imagens e mídia para a comparação completa.
Recebendo um mapa de outra pessoa🔗
Se chegou um .mm com links absolutos da máquina de outra pessoa:
- Peça a pasta inteira, não só o
.mm. - Ou peça um
.mmx, que traz os anexos junto. - Ou aceite que os links de arquivo não vão funcionar — links web continuam abrindo normalmente.
Você aprendeu
- A causa é quase sempre caminho absoluto, não arquivo perdido
- Links relativos tornam a pasta inteira portátil
- A opção fica em Preferências → Ambiente e vale ligar antes do primeiro anexo
- Uma estrutura de pastas previsível (
img/,docs/) é metade da solução
Perguntas para reflexão
- Por que um caminho absoluto funciona na sua máquina e falha na de outra pessoa?
- Onde se liga a opção de links relativos?
- Que estrutura de pastas torna um mapa com anexos portátil?
- Qual é o teste que prova que a portabilidade funcionou?