Maximilian Stiefel
4 years ago
commit
46f42a6cb4
6 changed files with 545 additions and 0 deletions
@ -0,0 +1,44 @@ |
|||
# Dockerfile for an image, that can run inkscape and PHP based webapps. |
|||
# Copyright (C) 2020 Maximilian Stiefel (stiefel.maximilian@online.de) |
|||
# |
|||
# This program is free software; you can redistribute it and/or modify it under |
|||
# the terms of the GNU General Public License as published by the Free Software |
|||
# Foundation; version 2. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, but WITHOUT ANY |
|||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A |
|||
# PARTICULAR PURPOSE. See the GNU General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU General Public License along with |
|||
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple |
|||
# Place, Suite 330, Boston, MA 02111-1307 USA |
|||
|
|||
FROM debian:latest |
|||
ARG DEBIAN_FRONTEND=noninteractive |
|||
# Updates |
|||
RUN apt update && apt upgrade -y |
|||
# Install LAMP |
|||
RUN apt install apache2 php php-mysql -y |
|||
RUN apt install unzip wget -y |
|||
# Prepare directory for images |
|||
RUN mkdir -p /var/www/html/images && chmod -R 777 /var/www/html/images |
|||
# Compile and install inkscape |
|||
RUN cd /tmp \ |
|||
&& wget https://gitlab.com/inkscape/inkscape/-/archive/INKSCAPE_1_0/inkscape-INKSCAPE_1_0.zip |
|||
&& wget https://gitlab.com/inkscape/inkscape-ci-docker/-/raw/master/install_dependencies.sh |
|||
RUN cd /tmp \ |
|||
&& chmod +x install_dependencies.sh \ |
|||
&& bash install_dependencies.sh --recommended |
|||
RUN cd /tmp \ |
|||
&& unzip inkscape-INKSCAPE_1_0.zip \ |
|||
&& cd inkscape-INKSCAPE_1_0 \ |
|||
&& mkdir build \ |
|||
&& cd build \ |
|||
&& cmake .. \ |
|||
&& make -j4 \ |
|||
&& make install |
|||
# Install rpl |
|||
RUN apt install rpl |
|||
RUN apt remove unzip wget |
|||
# Run apache |
|||
CMD apachectl -D FOREGROUND |
@ -0,0 +1,319 @@ |
|||
GNU GENERAL PUBLIC LICENSE |
|||
|
|||
Version 2, June 1991 |
|||
|
|||
Copyright (C) 1989, 1991 Free Software Foundation, Inc. |
|||
|
|||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA |
|||
|
|||
Everyone is permitted to copy and distribute verbatim copies of this license |
|||
document, but changing it is not allowed. |
|||
|
|||
Preamble |
|||
|
|||
The licenses for most software are designed to take away your freedom to share |
|||
and change it. By contrast, the GNU General Public License is intended to |
|||
guarantee your freedom to share and change free software--to make sure the |
|||
software is free for all its users. This General Public License applies to |
|||
most of the Free Software Foundation's software and to any other program whose |
|||
authors commit to using it. (Some other Free Software Foundation software |
|||
is covered by the GNU Lesser General Public License instead.) You can apply |
|||
it to your programs, too. |
|||
|
|||
When we speak of free software, we are referring to freedom, not price. Our |
|||
General Public Licenses are designed to make sure that you have the freedom |
|||
to distribute copies of free software (and charge for this service if you |
|||
wish), that you receive source code or can get it if you want it, that you |
|||
can change the software or use pieces of it in new free programs; and that |
|||
you know you can do these things. |
|||
|
|||
To protect your rights, we need to make restrictions that forbid anyone to |
|||
deny you these rights or to ask you to surrender the rights. These restrictions |
|||
translate to certain responsibilities for you if you distribute copies of |
|||
the software, or if you modify it. |
|||
|
|||
For example, if you distribute copies of such a program, whether gratis or |
|||
for a fee, you must give the recipients all the rights that you have. You |
|||
must make sure that they, too, receive or can get the source code. And you |
|||
must show them these terms so they know their rights. |
|||
|
|||
We protect your rights with two steps: (1) copyright the software, and (2) |
|||
offer you this license which gives you legal permission to copy, distribute |
|||
and/or modify the software. |
|||
|
|||
Also, for each author's protection and ours, we want to make certain that |
|||
everyone understands that there is no warranty for this free software. If |
|||
the software is modified by someone else and passed on, we want its recipients |
|||
to know that what they have is not the original, so that any problems introduced |
|||
by others will not reflect on the original authors' reputations. |
|||
|
|||
Finally, any free program is threatened constantly by software patents. We |
|||
wish to avoid the danger that redistributors of a free program will individually |
|||
obtain patent licenses, in effect making the program proprietary. To prevent |
|||
this, we have made it clear that any patent must be licensed for everyone's |
|||
free use or not licensed at all. |
|||
|
|||
The precise terms and conditions for copying, distribution and modification |
|||
follow. |
|||
|
|||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION |
|||
|
|||
0. This License applies to any program or other work which contains a notice |
|||
placed by the copyright holder saying it may be distributed under the terms |
|||
of this General Public License. The "Program", below, refers to any such program |
|||
or work, and a "work based on the Program" means either the Program or any |
|||
derivative work under copyright law: that is to say, a work containing the |
|||
Program or a portion of it, either verbatim or with modifications and/or translated |
|||
into another language. (Hereinafter, translation is included without limitation |
|||
in the term "modification".) Each licensee is addressed as "you". |
|||
|
|||
Activities other than copying, distribution and modification are not covered |
|||
by this License; they are outside its scope. The act of running the Program |
|||
is not restricted, and the output from the Program is covered only if its |
|||
contents constitute a work based on the Program (independent of having been |
|||
made by running the Program). Whether that is true depends on what the Program |
|||
does. |
|||
|
|||
1. You may copy and distribute verbatim copies of the Program's source code |
|||
as you receive it, in any medium, provided that you conspicuously and appropriately |
|||
publish on each copy an appropriate copyright notice and disclaimer of warranty; |
|||
keep intact all the notices that refer to this License and to the absence |
|||
of any warranty; and give any other recipients of the Program a copy of this |
|||
License along with the Program. |
|||
|
|||
You may charge a fee for the physical act of transferring a copy, and you |
|||
may at your option offer warranty protection in exchange for a fee. |
|||
|
|||
2. You may modify your copy or copies of the Program or any portion of it, |
|||
thus forming a work based on the Program, and copy and distribute such modifications |
|||
or work under the terms of Section 1 above, provided that you also meet all |
|||
of these conditions: |
|||
|
|||
a) You must cause the modified files to carry prominent notices stating that |
|||
you changed the files and the date of any change. |
|||
|
|||
b) You must cause any work that you distribute or publish, that in whole or |
|||
in part contains or is derived from the Program or any part thereof, to be |
|||
licensed as a whole at no charge to all third parties under the terms of this |
|||
License. |
|||
|
|||
c) If the modified program normally reads commands interactively when run, |
|||
you must cause it, when started running for such interactive use in the most |
|||
ordinary way, to print or display an announcement including an appropriate |
|||
copyright notice and a notice that there is no warranty (or else, saying that |
|||
you provide a warranty) and that users may redistribute the program under |
|||
these conditions, and telling the user how to view a copy of this License. |
|||
(Exception: if the Program itself is interactive but does not normally print |
|||
such an announcement, your work based on the Program is not required to print |
|||
an announcement.) |
|||
|
|||
These requirements apply to the modified work as a whole. If identifiable |
|||
sections of that work are not derived from the Program, and can be reasonably |
|||
considered independent and separate works in themselves, then this License, |
|||
and its terms, do not apply to those sections when you distribute them as |
|||
separate works. But when you distribute the same sections as part of a whole |
|||
which is a work based on the Program, the distribution of the whole must be |
|||
on the terms of this License, whose permissions for other licensees extend |
|||
to the entire whole, and thus to each and every part regardless of who wrote |
|||
it. |
|||
|
|||
Thus, it is not the intent of this section to claim rights or contest your |
|||
rights to work written entirely by you; rather, the intent is to exercise |
|||
the right to control the distribution of derivative or collective works based |
|||
on the Program. |
|||
|
|||
In addition, mere aggregation of another work not based on the Program with |
|||
the Program (or with a work based on the Program) on a volume of a storage |
|||
or distribution medium does not bring the other work under the scope of this |
|||
License. |
|||
|
|||
3. You may copy and distribute the Program (or a work based on it, under Section |
|||
2) in object code or executable form under the terms of Sections 1 and 2 above |
|||
provided that you also do one of the following: |
|||
|
|||
a) Accompany it with the complete corresponding machine-readable source code, |
|||
which must be distributed under the terms of Sections 1 and 2 above on a medium |
|||
customarily used for software interchange; or, |
|||
|
|||
b) Accompany it with a written offer, valid for at least three years, to give |
|||
any third party, for a charge no more than your cost of physically performing |
|||
source distribution, a complete machine-readable copy of the corresponding |
|||
source code, to be distributed under the terms of Sections 1 and 2 above on |
|||
a medium customarily used for software interchange; or, |
|||
|
|||
c) Accompany it with the information you received as to the offer to distribute |
|||
corresponding source code. (This alternative is allowed only for noncommercial |
|||
distribution and only if you received the program in object code or executable |
|||
form with such an offer, in accord with Subsection b above.) |
|||
|
|||
The source code for a work means the preferred form of the work for making |
|||
modifications to it. For an executable work, complete source code means all |
|||
the source code for all modules it contains, plus any associated interface |
|||
definition files, plus the scripts used to control compilation and installation |
|||
of the executable. However, as a special exception, the source code distributed |
|||
need not include anything that is normally distributed (in either source or |
|||
binary form) with the major components (compiler, kernel, and so on) of the |
|||
operating system on which the executable runs, unless that component itself |
|||
accompanies the executable. |
|||
|
|||
If distribution of executable or object code is made by offering access to |
|||
copy from a designated place, then offering equivalent access to copy the |
|||
source code from the same place counts as distribution of the source code, |
|||
even though third parties are not compelled to copy the source along with |
|||
the object code. |
|||
|
|||
4. You may not copy, modify, sublicense, or distribute the Program except |
|||
as expressly provided under this License. Any attempt otherwise to copy, modify, |
|||
sublicense or distribute the Program is void, and will automatically terminate |
|||
your rights under this License. However, parties who have received copies, |
|||
or rights, from you under this License will not have their licenses terminated |
|||
so long as such parties remain in full compliance. |
|||
|
|||
5. You are not required to accept this License, since you have not signed |
|||
it. However, nothing else grants you permission to modify or distribute the |
|||
Program or its derivative works. These actions are prohibited by law if you |
|||
do not accept this License. Therefore, by modifying or distributing the Program |
|||
(or any work based on the Program), you indicate your acceptance of this License |
|||
to do so, and all its terms and conditions for copying, distributing or modifying |
|||
the Program or works based on it. |
|||
|
|||
6. Each time you redistribute the Program (or any work based on the Program), |
|||
the recipient automatically receives a license from the original licensor |
|||
to copy, distribute or modify the Program subject to these terms and conditions. |
|||
You may not impose any further restrictions on the recipients' exercise of |
|||
the rights granted herein. You are not responsible for enforcing compliance |
|||
by third parties to this License. |
|||
|
|||
7. If, as a consequence of a court judgment or allegation of patent infringement |
|||
or for any other reason (not limited to patent issues), conditions are imposed |
|||
on you (whether by court order, agreement or otherwise) that contradict the |
|||
conditions of this License, they do not excuse you from the conditions of |
|||
this License. If you cannot distribute so as to satisfy simultaneously your |
|||
obligations under this License and any other pertinent obligations, then as |
|||
a consequence you may not distribute the Program at all. For example, if a |
|||
patent license would not permit royalty-free redistribution of the Program |
|||
by all those who receive copies directly or indirectly through you, then the |
|||
only way you could satisfy both it and this License would be to refrain entirely |
|||
from distribution of the Program. |
|||
|
|||
If any portion of this section is held invalid or unenforceable under any |
|||
particular circumstance, the balance of the section is intended to apply and |
|||
the section as a whole is intended to apply in other circumstances. |
|||
|
|||
It is not the purpose of this section to induce you to infringe any patents |
|||
or other property right claims or to contest validity of any such claims; |
|||
this section has the sole purpose of protecting the integrity of the free |
|||
software distribution system, which is implemented by public license practices. |
|||
Many people have made generous contributions to the wide range of software |
|||
distributed through that system in reliance on consistent application of that |
|||
system; it is up to the author/donor to decide if he or she is willing to |
|||
distribute software through any other system and a licensee cannot impose |
|||
that choice. |
|||
|
|||
This section is intended to make thoroughly clear what is believed to be a |
|||
consequence of the rest of this License. |
|||
|
|||
8. If the distribution and/or use of the Program is restricted in certain |
|||
countries either by patents or by copyrighted interfaces, the original copyright |
|||
holder who places the Program under this License may add an explicit geographical |
|||
distribution limitation excluding those countries, so that distribution is |
|||
permitted only in or among countries not thus excluded. In such case, this |
|||
License incorporates the limitation as if written in the body of this License. |
|||
|
|||
9. The Free Software Foundation may publish revised and/or new versions of |
|||
the General Public License from time to time. Such new versions will be similar |
|||
in spirit to the present version, but may differ in detail to address new |
|||
problems or concerns. |
|||
|
|||
Each version is given a distinguishing version number. If the Program specifies |
|||
a version number of this License which applies to it and "any later version", |
|||
you have the option of following the terms and conditions either of that version |
|||
or of any later version published by the Free Software Foundation. If the |
|||
Program does not specify a version number of this License, you may choose |
|||
any version ever published by the Free Software Foundation. |
|||
|
|||
10. If you wish to incorporate parts of the Program into other free programs |
|||
whose distribution conditions are different, write to the author to ask for |
|||
permission. For software which is copyrighted by the Free Software Foundation, |
|||
write to the Free Software Foundation; we sometimes make exceptions for this. |
|||
Our decision will be guided by the two goals of preserving the free status |
|||
of all derivatives of our free software and of promoting the sharing and reuse |
|||
of software generally. |
|||
|
|||
NO WARRANTY |
|||
|
|||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR |
|||
THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE |
|||
STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM |
|||
"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, |
|||
BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
|||
FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE |
|||
OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME |
|||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. |
|||
|
|||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING |
|||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE |
|||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY |
|||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE |
|||
OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA |
|||
OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES |
|||
OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH |
|||
HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. |
|||
END OF TERMS AND CONDITIONS |
|||
|
|||
How to Apply These Terms to Your New Programs |
|||
|
|||
If you develop a new program, and you want it to be of the greatest possible |
|||
use to the public, the best way to achieve this is to make it free software |
|||
which everyone can redistribute and change under these terms. |
|||
|
|||
To do so, attach the following notices to the program. It is safest to attach |
|||
them to the start of each source file to most effectively convey the exclusion |
|||
of warranty; and each file should have at least the "copyright" line and a |
|||
pointer to where the full notice is found. |
|||
|
|||
<one line to give the program's name and an idea of what it does.> |
|||
|
|||
Copyright (C)< yyyy> <name of author> |
|||
|
|||
This program is free software; you can redistribute it and/or modify it under |
|||
the terms of the GNU General Public License as published by the Free Software |
|||
Foundation; either version 2 of the License, or (at your option) any later |
|||
version. |
|||
|
|||
This program is distributed in the hope that it will be useful, but WITHOUT |
|||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
|||
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. |
|||
|
|||
You should have received a copy of the GNU General Public License along with |
|||
this program; if not, write to the Free Software Foundation, Inc., 51 Franklin |
|||
Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|||
|
|||
Also add information on how to contact you by electronic and paper mail. |
|||
|
|||
If the program is interactive, make it output a short notice like this when |
|||
it starts in an interactive mode: |
|||
|
|||
Gnomovision version 69, Copyright (C) year name of author Gnomovision comes |
|||
with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, |
|||
and you are welcome to redistribute it under certain conditions; type `show |
|||
c' for details. |
|||
|
|||
The hypothetical commands `show w' and `show c' should show the appropriate |
|||
parts of the General Public License. Of course, the commands you use may be |
|||
called something other than `show w' and `show c'; they could even be mouse-clicks |
|||
or menu items--whatever suits your program. |
|||
|
|||
You should also get your employer (if you work as a programmer) or your school, |
|||
if any, to sign a "copyright disclaimer" for the program, if necessary. Here |
|||
is a sample; alter the names: |
|||
|
|||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' |
|||
(which makes passes at compilers) written by James Hacker. |
|||
|
|||
<signature of Ty Coon >, 1 April 1989 Ty Coon, President of Vice This General |
|||
Public License does not permit incorporating your program into proprietary |
|||
programs. If your program is a subroutine library, you may consider it more |
|||
useful to permit linking proprietary applications with the library. If this |
|||
is what you want to do, use the GNU Lesser General Public License instead |
|||
of this License. |
@ -0,0 +1,3 @@ |
|||
# vector2latex |
|||
|
|||
Dockerized web application to conveniently convert SVG to LaTeX files. |
@ -0,0 +1,27 @@ |
|||
# docker-compose example configuration for using the corresponding image. |
|||
# Copyright (C) 2020 Maximilian Stiefel (stiefel.maximilian@online.de) |
|||
# |
|||
# This program is free software; you can redistribute it and/or modify it under |
|||
# the terms of the GNU General Public License as published by the Free Software |
|||
# Foundation; version 2. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, but WITHOUT ANY |
|||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A |
|||
# PARTICULAR PURPOSE. See the GNU General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU General Public License along with |
|||
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple |
|||
# Place, Suite 330, Boston, MA 02111-1307 USA |
|||
|
|||
version: '2' |
|||
services: |
|||
server: |
|||
image: m3x1m0m/v2limg:latest |
|||
restart: always |
|||
ports: |
|||
- "80:80" |
|||
# expose: |
|||
# - "80" |
|||
|
|||
volumes: |
|||
- ./web:/var/www/html |
@ -0,0 +1,75 @@ |
|||
<?php |
|||
|
|||
/* |
|||
The ugliest webapp in the world to convert SVG to LaTeX using inkscape. |
|||
Copyright (C) 2020 Maximilian Stiefel (stiefel.maximilian@online.de) |
|||
|
|||
This program is free software; you can redistribute it and/or modify it under |
|||
the terms of the GNU General Public License as published by the Free Software |
|||
Foundation; version 2. |
|||
|
|||
This program is distributed in the hope that it will be useful, but WITHOUT |
|||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
|||
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more |
|||
details. |
|||
|
|||
You should have received a copy of the GNU General Public License along with |
|||
this program; if not, write to the Free Software Foundation, Inc., 59 Temple |
|||
Place, Suite 330, Boston, MA 02111-1307 USA |
|||
*/ |
|||
|
|||
if(isset($_FILES['image']) && $_FILES['image']['error'] === UPLOAD_ERR_OK) { |
|||
$errors= array(); |
|||
$file_name = $_FILES['image']['name']; |
|||
$file_size =$_FILES['image']['size']; |
|||
$file_tmp =$_FILES['image']['tmp_name']; |
|||
$file_type=$_FILES['image']['type']; |
|||
$file_ext=strtolower(end(explode('.',$_FILES['image']['name']))); |
|||
$extensions= array("svg"); |
|||
$upload_dir = "./images/"; |
|||
$dir_name = $_POST['dir_name']; |
|||
$without_extension = pathinfo($file_name, PATHINFO_FILENAME); |
|||
|
|||
echo "Desired directory name is: ".$dir_name."</br>"; |
|||
if (strlen($dir_name) == 0) { |
|||
$errors[] = "Error: Please enter directory name."; |
|||
} |
|||
if(in_array($file_ext,$extensions)=== false) { |
|||
$errors[]="Error: Extension not allowed, please choose a JPEG or PNG file."; |
|||
} |
|||
if(empty($errors)==true) { |
|||
//$new_name = md5(time() . $file_name); |
|||
unlink($upload_dir.$file_name); |
|||
unlink($upload_dir.$without_extension.".pdf"); |
|||
unlink($upload_dir.$without_extension.".pdf_tex"); |
|||
if (move_uploaded_file($file_tmp, $upload_dir.$file_name)) { |
|||
echo "Upload successful.</br>"; |
|||
$current_dir = getcwd(); |
|||
echo "Current directory is ".$current_dir."</br>"; |
|||
$output = shell_exec("./svg-to-latex.sh ".$upload_dir.$file_name." ".$dir_name); |
|||
echo "</p>"; |
|||
echo "Conversion results : </br>"; |
|||
?> |
|||
<a href="<?php echo $upload_dir.$without_extension.".pdf";?>" target="_blank"><?php echo $upload_dir.$without_extension.".pdf";?></a> </br> |
|||
<a href="<?php echo $upload_dir.$without_extension.".pdf_tex";?>" target="_blank"><?php echo $upload_dir.$without_extension.".pdf_tex";?></a></p> |
|||
<?php |
|||
echo "Console output: </br>"; |
|||
echo "<pre>$output</pre>"; |
|||
} else { |
|||
echo "Error: File could not be moved to target directory.</br>"; |
|||
} |
|||
} else { |
|||
print_r($errors); |
|||
} |
|||
} |
|||
?> |
|||
<html> |
|||
<body> |
|||
This little tool allows to convert vector graphics to latex. The actual workhorse is <a href="https://inkscape.org/">inkscape</a>. Please upload the .svg file you wish to convert. |
|||
<form action="" method="POST" enctype="multipart/form-data"> |
|||
Directory where you store images e.g. fig: <input type="text" name="dir_name"></br> |
|||
<input type="file" name="image" /></br> |
|||
<input type="submit" value="Convert"/> |
|||
</form> |
|||
</body> |
|||
</html> |
@ -0,0 +1,77 @@ |
|||
#!/bin/sh |
|||
|
|||
################################################################# |
|||
# Convert a vector graphic to a .tex file and use it with |
|||
# Copyright (C) 2020 Maximilian Stiefel (stiefel.maximilian@online.de) |
|||
# |
|||
# This program is free software; you can redistribute it and/or modify it under |
|||
# the terms of the GNU General Public License as published by the Free Software |
|||
# Foundation; version 2. |
|||
# |
|||
# This program is distributed in the hope that it will be useful, but WITHOUT ANY |
|||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A |
|||
# PARTICULAR PURPOSE. See the GNU General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU General Public License along with |
|||
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple |
|||
# Place, Suite 330, Boston, MA 02111-1307 USA |
|||
# |
|||
# Created: 29. June 2018 |
|||
# CLI usage: ./svg_to_latex.sh path_to_graphic.svg |
|||
# Required PKGs: inkscape (tested w/ version 1.0), rpl |
|||
# |
|||
################################################################# |
|||
|
|||
################################################################# |
|||
# Vars |
|||
################################################################# |
|||
NU_PARAMS=1 |
|||
PDF_EXT=pdf |
|||
TEX_EXT=pdf_tex |
|||
|
|||
################################################################# |
|||
# Action |
|||
################################################################# |
|||
# Check if the expected number of parameters is given. |
|||
if [ $# < $NU_PARAMS ] |
|||
then |
|||
echo "$0: Error: Illegal number of parameters." |
|||
exit 1; |
|||
fi |
|||
GRAPHIC_FILE=$1 |
|||
BASE=$(basename -- "$GRAPHIC_FILE") |
|||
EXTENSION=${GRAPHIC_FILE##*.} |
|||
PDF_FILE=${GRAPHIC_FILE%.$EXTENSION}.$PDF_EXT |
|||
TEX_FILE=${GRAPHIC_FILE%.$EXTENSION}.$TEX_EXT |
|||
if [ $# -eq $(($NU_PARAMS+1)) ] |
|||
then |
|||
NEW_PDF_FILE="./"$2"/"${BASE%.$EXTENSION}.$PDF_EXT |
|||
NEW_TEX_FILE="./"$2"/"${BASE%.$EXTENSION}.$TEX_EXT |
|||
else |
|||
NEW_PDF_FILE=$PDF_FILE |
|||
NEW_TEX_FILE=$TEX_FILE |
|||
fi |
|||
# Convert to LaTeX |
|||
inkscape -D --export-latex --export-filename=$PDF_FILE $GRAPHIC_FILE |
|||
if [ $? -eq 1 ] |
|||
then |
|||
exit 1 |
|||
fi |
|||
# Perform one small mod to be able to use use file directly with \input{} |
|||
rpl -q ${PDF_FILE##*/} $NEW_PDF_FILE $TEX_FILE |
|||
if [ $? -eq 1 ] |
|||
then |
|||
exit 1 |
|||
fi |
|||
echo "$0: Produced $NEW_PDF_FILE and $NEW_TEX_FILE. Use " |
|||
echo "" |
|||
printf "%s\n" "\\begin{figure}[H]" |
|||
printf "%s\n" " \centering" |
|||
printf "%s\n" " \def\svgwidth{\columnwidth}" |
|||
printf "%s\n" " \input{$TEX_FILE}" |
|||
printf "%s\n" " \caption{}" |
|||
printf "%s\n" " \label{fig:${BASE%.*}}" |
|||
printf "%s\n" "\end{figure}" |
|||
echo "" |
|||
echo "to include the graphic into your document." |
|||
exit 0 |
Loading…
Reference in new issue