---
description: 'Uma breve introdução ao Asciidoctor'
next: books/fdp-primer/rosetta
params:
  path: /books/fdp-primer/asciidoctor-primer/
prev: books/fdp-primer/doc-build
showBookMenu: 'true'
tags: ["AsciiDoc", "Asciidoctor", "Primer", "Introduction", "Guide"]
title: 'Capítulo 6. Primer Asciidoctor'
weight: 7
---

[[asciidoctor-primer]]
= Primer Asciidoctor
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 6
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/fdp-primer/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

A maioria das documentações do FDP é escrita em AsciiDoc. Este capítulo explica o que isso significa, como ler e entender o código da documentação e as técnicas usadas. Para obter uma referência completa dos recursos do Asciidoctor, consulte a link:https://docs.asciidoctor.org/home/[documentação do Asciidoctor]. Alguns exemplos usados neste capítulo foram retirados da link:https://docs.asciidoctor.org/asciidoc/latest/syntax-quick-reference[Referência rápida de sintaxe AsciiDoc].

[[asciidoctor-primer-overview]]
== Visão geral

Nos primórdios da era computacional, o texto eletrônico era simples. Havia poucos conjuntos de caracteres como ASCII ou EBCDIC, e apenas isso. Texto era texto, e o que você lia era realmente o texto que você tinha. Sem frescuras, sem formatação, sem inteligência.

Inevitavelmente, isso não era suficiente. Quando o texto está em um formato utilizável por computadores, espera-se que eles possam usá-lo e manipulá-lo de maneira inteligente. Os autores querem indicar que certas frases devem ser enfatizadas, adicionadas a um glossário ou transformadas em hiperlinks. Os nomes dos arquivos podem ser apresentados em uma fonte de estilo "typewriter" para exibição na tela do computador, ou como "itálico" quando impressos, ou qualquer outra opção dentre uma infinidade de opções para apresentação.

Esperava-se que a Inteligência Artificial (IA) facilitasse isso. O computador leria o documento e identificaria automaticamente frases-chave, nomes de arquivos, textos que o leitor deveria digitar, exemplos e outros tipos. Infelizmente, na vida real não foi dessa forma, e os computadores ainda precisam de assistência antes que possam processar o texto de maneira significativa.

Mais precisamente, eles precisam de ajuda para identificar o que é o quê. Considere este texto:

Para remover [.filename]#/tmp/foo#, utilize o man:rm[1].

[source, shell]
----
% rm /tmp/foo
----

É fácil identificar quais partes são nomes de arquivos, quais são comandos a serem digitados, quais partes são referências a páginas de manual e assim por diante. Mas o computador que processa o documento não consegue. Para isso, precisamos utilizar markup.

O exemplo anterior é representado neste documento da seguinte forma:

....
Para remover */tmp/foo*, utilize o man:rm[1].

[source,shell]
----
% rm /tmp/foo
----
....

[[asciidoctor-headings]]
== Cabeçalhos

Asciidoctor suporta seis níveis de cabeçalhos. Se o tipo de documento for `artigo`, apenas um nível 0 (`=`) pode ser usado. Se o tipo de documento for `livro`, pode haver vários títulos de nível 0 (`=`).

Estes são exemplos de cabeçalhos em um `artigo`.

....
= Título do Documento (Nível 0)

== Título da Seção de Nível 1

=== Título da Seção de Nível 2

==== Título da Seção de Nível 3

===== Título da Seção de Nível 4

====== Título da Seção de Nível 5

== Outro Título de Seção de Nível 1
....

[WARNING]
====
Os níveis de seção não podem ser ignorados ao aninhar seções.

A sintaxe a seguir não está correta.

....
= Título do Documento

== Nível 1

==== Nível 3
....
====

[[asciidoctor-paragraphs]]
== Parágrafos

Os parágrafos não precisam de marcação especial no AsciiDoc. Um parágrafo é definido por uma ou mais linhas consecutivas de texto. Para criar um novo parágrafo, deixe uma linha em branco.

Por exemplo, este é um título com dois parágrafos.

....
= Este é o título

Este é o primeiro parágrafo. Este também é o primeiro parágrafo.

E este é o segundo parágrafo.
....

[[asciidoctor-lists]]
== Listas

Asciidoctor suporta alguns tipos de listas, as mais comuns são `ordenadas` e` não ordenadas`. Para obter mais informações sobre listas, consulte o link:https://docs.asciidoctor.org/asciidoc/latest/syntax-quick-reference/#lists[Referência Rápida da Sintaxe AsciiDoc].

[[asciidoctor-ordered-lists]]
=== Listas ordenadas

Para criar uma lista ordenada, use o caractere `.`.

Por exemplo, esta é uma lista ordenada.

....
. Primeiro item
. Segundo item
.. Sub-segundo item
. Terceiro item
....

E isso seria processado como.

. Primeiro item
. Segundo item
.. Sub-segundo item
. Terceiro item

[[asciidoctor-unordered-lists]]
=== Listas não ordenadas

Para criar uma lista não ordenada, use o caractere `*`.

Por exemplo, esta é uma lista não ordenada.

....
* Primeiro item
* Segundo item
** Sub-segundo item
* Terceiro item
....

E isso seria processado como.

* Primeiro item
* Segundo item
** Sub-segundo item
* Terceiro item

[[asciidoctor-links]]
== Links

[[asciidoctor-links-external]]
=== Links externos

Para apontar para outro site, a macro `link` deve ser usada.

....
link:https://www.FreeBSD.org[FreeBSD]
....

[NOTE]
====
Como a documentação do Asciidoctor descreve, a macro `link` não é necessária quando o link começa com um esquema de URL como `https`. No entanto, é uma boa prática fazer o uso assim para garantir que o Asciidoctor renderize o link corretamente, especialmente em idiomas não latinos como o Japonês.
====

[[asciidoctor-links-internal]]
=== Links para outro livro ou artigo

Para apontar para outro livro ou artigo, as variáveis Asciidoctor devem ser usadas. Por exemplo, se estamos no artigo `cups` e queremos apontar para `ipsec-must`, esses passos devem ser usados.

. Inclua o arquivo [.filename]#urls.adoc# da pasta [.filename]#~/doc/shared#.
+
....
\include::shared/{lang}/urls.adoc[]
....
+
. Em seguida, crie um link usando a variável Asciidoctor para o artigo `ipsec-must`.
+
....
extref:{ipsec-must}[IPSec-Must article]
....
+
E isso seria processado como.
+
extref:{ipsec-must}[IPSec-Must article]

[NOTE]
====
A macro `extref` é definida como uma extensão. Ela é projetada para renderizar o link correto entre as diferentes saídas
====

=== Links para o mesmo arquivo ou para outro arquivo no mesmo livro

Os livros são estruturados em diretórios diferentes para manter um layout sensato. Para criar um link de um subdiretório de um livro para outro subdiretório do mesmo livro, use a macro `crossref`:
....
crossref:doc-build[documentation-makefile, Este link]
....
E isso seria renderizado como

crossref:doc-build[documentation-makefile, Este link]

[NOTE]
====
A macro `crossref` é definida como uma extensão. Ela é projetada para renderizar o link correto entre as diferentes saídas
====

[NOTE]
====
Use a macro `crossref` para links intra-documento também. Embora possa ser inconveniente escrever o nome do documento atual, ela garante que o link correto seja renderizado entre as diferentes saídas
====

[WARNING]
====
Não use nem a macro `xref` nem seu atalho `<<` `>>`. Eles não funcionam bem em todos os formatos de saída.
====

[[asciidoctor-images-icons]]
== Imagens e Ícones

Imagens e ícones desempenham um papel crucial na melhoria da experiência geral do usuário. Esses elementos visuais são estrategicamente integrados para transmitir informações, esclarecer conceitos e fornecer uma interface visualmente envolvente.

[[asciidoctor-images]]
=== Imagens

As imagens ajudam a ilustrar conceitos complexos, tornando-os mais acessíveis aos usuários.

O primeiro passo será adicionar a imagem no diretório de imagens no caminho:

* [.filename]#~/website/static/images/# para o website.
* [.filename]#~/documentation/static/images/# para a documentação.

Por exemplo, para adicionar uma nova imagem ao processo de instalação do FreeBSD, a imagem será salva no caminho [.filename]#~/documentation/static/images/books/handbook/bsdinstall/new-image3.png#.

O próximo passo será configurar os atributos do Asciidoctor `images-path` e `imagesdir`.

Usaremos como exemplo o cabeçalho do artigo extref:{freebsd-releng}[Engenharia de Releases do FreeBSD].

[source, asciidoc]
....
= Engenharia de Release do FreeBSD
:doctype: article

[...]

:images-path: articles/freebsd-releng/ <1>

ifdef::env-beastie[]
ifdef::backend-html5[]

[...]

:imagesdir: ../../../images/{images-path} <2>
endif::[]

[...]

....

<.> Faz referência ao caminho dentro da pasta [.filename]#/static/images#.
<.> Faz referência ao atributo Asciidoctor.

Uma vez que a imagem esteja no caminho correto e os atributos do Asciidoctor tenham sido configurados no documento, a macro `image` pode ser usada.

Este é um exemplo:

....
image::new-image3.png[Nova etapa no processo de instalação do FreeBSD]
....

[TIP]
====
Para melhorar a acessibilidade, é obrigatório adicionar texto descritivo a cada imagem.
====

[[asciidoctor-icons]]
=== Ícones

Os ícones servem como símbolos intuitivos para reconhecimento e navegação rápidos.

O primeiro passo para usar ícones é adicionar a propriedade `icons` à seção de propriedades do Asciidoctor, no topo de cada documento.

....
:icons: font
....

Depois que a propriedade do ícone do Asciidoctor for definida, um ícone suportado pela link:https://fontawesome.com/v4/icons/[Font Awesome] pode ser adicionado.

Este é um exemplo de como usar o ícone `envelope`:

....
icon:envelope[link=mailto:test@example.com, title="contact"]
....

[TIP]
====
Para melhorar a acessibilidade do site, o atributo `title` é obrigatório.
====

[[asciidoctor-conclusion]]
== Conclusão

Esta é a conclusão deste primer do Asciidoctor. Por razões de espaço e complexidade, várias assuntos não foram abordadas em profundidade (ou completamente).
