# BEd: Beamer Editor
*Copyright 2015-2024 Jean-Baptiste Delisle*

BEd is a Beamer (LaTeX presentation) GUI.
It allows you to create and edit Beamer presentations
using the mouse to move/resize/crop/...
images (or Tikz pictures), text blocks, and arrows.

## How does it work?
The file format used by BEd is a standard .tex file which can
also be compiled outside of BEd.
In order to be able to edit a .tex file in BEd
you need to load the 'bed' LaTeX package (\usepackage{bed} in the preamble).
This package defines four new LaTeX commands
(which are easily added/modified within BEd):

- \img (image)
- \tkp (Tikz picture)
- \txt (text block)
- \arw (arrow)

BEd parses the .tex file
(plus the .log file that is created when compiling)
in order to find all these elements
and uses the pdf generated by pdflatex for the rendering.
BEd extracts from each page of the pdf
a preview of each element (img, tkp, txt, arw) appearing in it.
You can then move, resize... these elements with the mouse and
the preview is updated in live.
This preview is based on a crude modification
of the images extracted from the pdf.
In order to see the final pdf rendering, you need to recompile the file
(which generally takes a few seconds).
The whole point of the live rendering is that it allows you to perform
most of the modifications using the mouse seamlessly.

## Features:
- Group/ungroup elements
- Align elements (or groups) between them and/or on a grid (magnetism)
- Move elements (or groups) in depth
- Copy/cut/paste (elements, groups, or whole frame)
- Save (and use) frame templates
- Preview current frame (recompile only the current frame, to save time)
- Complete reloading (recompile the whole document)
- Actions using the mouse:
   * click at the center of an object (or group) to move it
   * click on the borders/corners to resize
   * maintain shift to resize without preserving ratio (images)
   * maintain meta (Windows key) to rotate (center of rotation depends on click location)
   * maintain meta+shift to crop an image
   * double-click to edit (element, group, or frame) properties
   * use the mouse wheel over a selected arrow to change its line width
   * maintain ctrl and use the mouse wheel to zoom
- Hyperlinks, [pdfpc](https://pdfpc.github.io), and movies:
It is also possible to add an hyperlink to an image (\img),
using the "Link" field.
For users of the pdfpc viewer,
this can be used to include a movie in the presentation.
You only need to put "run:filename" in the "Link" field
(see the pdfpc manual for more details).
With another pdf viewer, the movie will probably be played
in an external player.
- Syntax highlighting:
If available, BEd uses the pygments library to add syntax
highlighting to LaTeX commands.

## Dependencies:
BEd is written in python3 and uses the Qt6 framework (PySide6).
You need to have python3, PySide6,
and the pymupdf library installed on your system.
You also need to have a working latex installation.
BEd optionally depends on the pygments library for syntax highlighting.

## Install:
### Arch Linux
- AUR package: [bed-latex](https://aur.archlinux.org/packages/bed-latex)

### Using pip:
- `pip install bed-latex`

## License:
GPLv3+
