Pygments lexer for Portugol Studio.
Project description
Pygments_Portugol
Pygments é um excelente pacote em Python destinado à coloração de sintaxe (syntax highlighting), sendo possível utilizá-lo, inclusive, em documentos LaTeX. Este pacote fornece um lexer para a linguagem Portugol Studio.
Instalação
Após a instalação do Python 3, você provavelmente poderá executar o comando a seguir a fim de instalar o Pygments:
$ pip install pygments
Note que
$
indica o prompt do shell, você não deve digitar isso.
Algumas variações desse comando podem aparecer a depender da plataforma, por exemplo:
$ pip3 install pygments
$ python3 -m pip install pygments
$ python -m pip install pygments
Após instalar com sucesso o Pygments, você pode instalar o lexer para Portugol Studio:
$ pip install pygments-portugol
Utilização
Para utilizar o lexer, o procedimento é equivalente a qualquer outra linguagem suportada pelo Pygments. Utilize portugol
ou portugolstudio
como nome da linguagem. Por exemplo, o código em Python a seguir ilustra como ler um arquivo code.por
e salvar em HTML no arquivo formatted.html
.
from pygments import highlight
from pygments.lexers import get_lexer_by_name
from pygments.formatters import HtmlFormatter
with open("./code.por", "r") as fl:
code = fl.read()
lexer = get_lexer_by_name("portugol", stripall=True)
formatter = HtmlFormatter(linenos=True, noclasses=True)
result = highlight(code, lexer, formatter)
with open("./formatted.html", "w") as fl:
fl.write(result)
Clique aqui para ver o resultado.
Utilização com LaTeX
Para tipografar um código em LaTeX com o Pygments, pode-se utilizar o pacote minted
. O código a seguir é um exemplo. A fonte DejaVuSansMono foi utilizada apenas por questões estéticas. As duas linhas referentes à fonte podem ser removidas ou substituídas. Caso queira usar pdfLaTeX, remova-as.
% !TeX program = xelatex
\documentclass{article}
\usepackage{fontspec} % remover caso esteja usando pdfLaTeX
\usepackage{DejaVuSansMono} % remover caso esteja usando pdfLaTeX
\setmonofont[Scale=MatchLowercase]{DejaVuSansMono} % remover caso esteja usando pdfLaTeX
\usepackage{minted} % importa o pacote para que possamos usar
\begin{document}
O código a seguir ilustra um fatorial recursivo no Portugol Studio.
\begin{minted}[autogobble, linenos]{portugol}
programa
{
funcao inicio()
{
inteiro numero
escreva("Digite um número: ")
leia(numero)
limpa()
escreva("O fatorial de ", numero, " é: ", fatorial(numero), "\n")
}
// Função recursiva que calcula o fatorial do número passado
funcao inteiro fatorial(inteiro numero)
{
se (numero == 1 ou numero == 0)
{
retorne 1
}
retorne numero * fatorial(numero - 1)
}
}
\end{minted}
\end{document}
Veja este tutorial se quiser ver outras possibilidades, como escolher cores diferentes ou importar de um arquivo externo.
Utilização em LaTeX no Overleaf
Caso você tenha o costume de usar Overleaf, pode ter lido a seção anterior e pensado que é impossível instalar um pacote Python no Overleaf. Sim, é verdade. Felizmente, é possível utilizar um lexer sem instalação obrigatória.
-
Copie o arquivo do lexer (este) e salve como, por exemplo,
PortugolStudioLexer.py
. -
Coloque no mesmo diretório do seu arquivo
.tex
; -
Substitua o nome da linguagem por
PortugolStudioLexer.py:PortugolStudioLexer -x
. -
O código deve ser assim (veja o exemplo completo na seção anterior):
% ...
\begin{minted}[autogobble, linenos]{PortugolStudioLexer.py:PortugolStudioLexer -x}
// seu código
\end{minted}
% ...
Isto pode ser recomendado para projetos maiores, para reduzir a quantidade de dependências que outros colaboradores precisarão instalar (o mesmo vale para fontes personalizadas). Para projetos menores, entretanto, é mais prático instalar e apenas utilizar o nome da linguagem.
Contribuição
Caso note algo de errado, fique à vontade para abrir uma issue ou, ainda melhor, enviar o seu Pull Request.
Autor
Desenvolvido por Héliton Martins.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pygments_portugol-0.2.1.tar.gz
.
File metadata
- Download URL: pygments_portugol-0.2.1.tar.gz
- Upload date:
- Size: 17.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4cb3c25530d40cec5d9e7f0612054974c7cdf69447073d26a0862499e4f65cab |
|
MD5 | 81b713d6c4c64eb3b7fc046d1e73bb0e |
|
BLAKE2b-256 | 8ba5e7e71ae6a4434437180102b0aebfbc35fcb0d52ef62c841d710b08c7db87 |
File details
Details for the file pygments_portugol-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: pygments_portugol-0.2.1-py3-none-any.whl
- Upload date:
- Size: 17.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 51b9230d8ab45ac6f2f6b6c6d8d5426619157028469c295ae8e3eb427486b94f |
|
MD5 | 12712c7d44562cf3b6e3a3fa74636076 |
|
BLAKE2b-256 | 90fc32d73e4d4c93b4e9f127a5d03a94af439bf8deb994b831ee8be9116e0302 |