Giter Club home page Giter Club logo

jsahil730 / latexindent.pl Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cmhughes/latexindent.pl

0.0 0.0 0.0 48.69 MB

Perl script to add indentation (leading horizontal space) to LaTeX files. It can modify line breaks before, during and after code blocks; it can perform text wrapping and paragraph line break removal. It can also perform string-based and regex-based substitutions/replacements. The script is customisable through its YAML interface.

License: GNU General Public License v3.0

Perl 9.21% Shell 3.36% TeX 87.32% CMake 0.03% Batchfile 0.08%

latexindent.pl's Introduction

latexindent.pl

Build Status Build status Documentation Status

latexindent logo

latexindent.pl is a perl script to indent (add horizontal leading space to) code within environments, commands, after headings and within special code blocks.

It has the ability to align delimiters in environments and commands, and can modify line breaks.

version

latexindent.pl, version 3.10, 2021-06-19

author

Chris Hughes (cmhughes)

documentation

For complete details, please see:

build status

I use both travis-ci (Linux) and AppVeyor (Windows) as continuous integration services to test latexindent.pl for a small selection of test cases for every commit (I use git to track changes in the many test cases listed in the test-cases directory); you can see which versions of perl are tested by travis-ci within .travis.yml.

Build Status Build status

Windows executable

latexindent.exe is a standalone executable file which does not require a perl installation. It is available at https://ctan.org/tex-archive/support/latexindent and also from the releases page of this repository. latexindent.exe is created using

perl ppp.pl -u -o latexindent.exe latexindent.pl

using the Par::Packer perl module. ppp.pl is located in the helper-scripts directory of this repository.

usage

You'll need

latexindent.pl
LatexIndent/*.pm
defaultSettings.yaml

in the same directory.

Windows users might prefer to get

latexindent.exe
defaultSettings.yaml

perl modules

You'll need a few readily-available perl modules. Full details are given within the Appendix of the documentation; you might also like to see .travis.yml for Linux/MacOS users, and .appveyor.yml for Strawberry perl users.

testing

A nice way to test the script is to navigate to the test-cases directory, and then run the command (on Linux/Mac -- sorry, a Windows test-case version is not available):

./test-cases.sh

important

This script may not work for your style of formatting; I highly recommend comparing the outputfile.tex to make sure that nothing has been changed (or removed) in a way that will damage your file.

I recommend using each of the following:

  • a visual check, at the very least, make sure that each file has the same number of lines
  • a check using latexdiff inputfile.tex outputfile.tex
  • git status myfile.tex

feature requests

I'm happy to review feature requests, but I make no promises as to if they will be implemented; if they can be implemented, I make no promises as to how long it will take to implement them, and in which order I do so -- some features are more difficult than others! Feel free to post on the issues page of this repository.

development model

I follow the development model given here: http://nvie.com/posts/a-successful-git-branching-model/ which means that latexindent.pl always has (at least) two branches:

main
develop

The main branch always contains the released version and develop contains the development version. When developing a new feature or bug fix, I typically use:

git checkout develop
git checkout -b feature/name-of-feature

and then I merge it into the develop branch using

git checkout develop
git merge feature/name-of-feature --no-ff

perl version

I develop latexindent.pl on Ubuntu Linux, using perlbrew; I currently develop on perl version v5.30.3

related projects

You might like to checkout the following related projects on github.

arara: GitHub stars

atom-beautify: GitHub stars

quotes

I find that the following quotes resonate with me with regards to my approach to latexindent.pl:

  • I want people to use Perl. I want to be a positive ingredient of the world and make my American history. So, whatever it takes to give away my software and get it used, that's great. Larry Wall
  • A common, brute-force approach to parsing documents where newlines are not significant is to read ... the entire file as one string ... and then extract tokens one by one, Christiansen & Torkington, Perl Cookbook, Section 6.16
  • Once you understand the power that regular expressions provide, the small amount of work spent learning them will feel trivial indeed Friedl, Mastering Regular Expressions, end of Chapter 1.
  • a problem speaks to them, and they have to solve it...and it becomes a hobby. But they keep coming back to it every now and then. They keep tinkering. It will never be finished...that's the point of a hobby, Westwood to Reacher in 'Make Me', Lee Child
  • Do the best you can until you know better. Then when you know better, do better. Maya Angelou

changelog

changelog.md provides details of the history of the project.

latexindent.pl's People

Contributors

cmhughes avatar qiancy98 avatar jasjuang avatar alexreg avatar msramalho avatar newptcai avatar xu-cheng avatar jeanlego avatar jun-sheaf avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.