commit 964e2e95b9cef5657dee90b651816a83a5c48333 Author: Thomas Dehaeze Date: Mon Aug 5 15:59:21 2024 +0200 initial commit diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..f092f87 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +*.svg binary +*.pdf binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..13cea8a --- /dev/null +++ b/.gitignore @@ -0,0 +1,293 @@ +auto/ +.auctex-auto/ + +nohup.out + +# Windows default autosave extension +*.asv + +# OSX / *nix default autosave extension +*.m~ + +# Compiled MEX binaries (all platforms) +*.mex* + +# Packaged app and toolbox files +*.mlappinstall +*.mltbx + +# Generated helpsearch folders +helpsearch*/ + +# Simulink code generation folders +slprj/ +sccprj/ + +# Simulink autosave extension +*.autosave + +# Octave session info +octave-workspace + +# Simulink Cache +*.slxc + +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 +.*.lb + +## Intermediate documents: +*.dvi +*.xdv +*-converted-to.* +# these rules might exclude image files for figures etc. +# *.ps +# *.eps +# *.pdf + +## Generated if empty string is given at "Please type another file name for output:" +.pdf + +## Bibliography auxiliary files (bibtex/biblatex/biber): +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.run.xml + +## Build tool auxiliary files: +*.fdb_latexmk +*.synctex +*.synctex(busy) +*.synctex.gz +*.synctex.gz(busy) +*.pdfsync + +## Build tool directories for auxiliary files +# latexrun +latex.out/ + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# beamer +*.nav +*.pre +*.snm +*.vrb + +# changes +*.soc + +# comment +*.cut + +# cprotect +*.cpt + +# elsarticle (documentclass of Elsevier journals) +*.spl + +# endnotes +*.ent + +# fixme +*.lox + +# feynmf/feynmp +*.mf +*.mp +*.t[1-9] +*.t[1-9][0-9] +*.tfm + +#(r)(e)ledmac/(r)(e)ledpar +*.end +*.?end +*.[1-9] +*.[1-9][0-9] +*.[1-9][0-9][0-9] +*.[1-9]R +*.[1-9][0-9]R +*.[1-9][0-9][0-9]R +*.eledsec[1-9] +*.eledsec[1-9]R +*.eledsec[1-9][0-9] +*.eledsec[1-9][0-9]R +*.eledsec[1-9][0-9][0-9] +*.eledsec[1-9][0-9][0-9]R + +# glossaries +*.acn +*.acr +*.glg +*.glo +*.gls +*.glsdefs + +# gnuplottex +*-gnuplottex-* + +# gregoriotex +*.gaux +*.gtex + +# htlatex +*.4ct +*.4tc +*.idv +*.lg +*.trc +*.xref + +# hyperref +*.brf + +# knitr +*-concordance.tex +# TODO Comment the next line if you want to keep your tikz graphics files +*.tikz +*-tikzDictionary + +# listings +*.lol + +# makeidx +*.idx +*.ilg +*.ind +*.ist + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc[0-9]* +*.slf[0-9]* +*.slt[0-9]* +*.stc[0-9]* + +# minted +_minted* +*.pyg + +# morewrites +*.mw + +# nomencl +*.nlg +*.nlo +*.nls + +# pax +*.pax + +# pdfpcnotes +*.pdfpc + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# scrwfile +*.wrt + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# tcolorbox +*.listing + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# todonotes +*.tdo + +# vhistory +*.hst +*.ver + +# easy-todo +*.lod + +# xcolor +*.xcp + +# xmpincl +*.xmpi + +# xindy +*.xdy + +# xypic precompiled matrices +*.xyc + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# Texpad +.texpadtmp + +# LyX +*.lyx~ + +# Kile +*.backup + +# KBibTeX +*~[0-9]* + +# auto folder when using emacs and auctex +./auto/* +*.el + +# expex forward references with \gathertags +*-tags.tex + +# standalone packages +*.sta diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..f936676 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Dehaeze Thomas + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/index.html b/index.html new file mode 100644 index 0000000..4fc3949 --- /dev/null +++ b/index.html @@ -0,0 +1,133 @@ + + + + + + +Active Damping of Rotating Platforms using Integral Force Feedback + + + + + + + +
+ UP + | + HOME +
+

Active Damping of Rotating Platforms using Integral Force Feedback +
+Dehaeze Thomas, Collette Christophe +

+
+

+Abstract: +

+ +

+This paper investigates the use of Integral Force Feedback (IFF) for the active damping of rotating mechanical systems. +Guaranteed stability, typical benefit of IFF, is lost as soon as the system is rotating due to gyroscopic effects. +To overcome this issue, two modifications of the classical IFF control scheme are proposed. +The first consists of slightly modifying the control law while the second consists of adding springs in parallel with the force sensors. +Conditions for stability and optimal parameters are derived. +The results reveal that, despite their different implementations, both modified IFF control scheme have almost identical damping authority on the suspension modes. +

+
+ +
+

Journal Paper (pdf)

+
+

+The paper has been created using Org Mode (generating LaTeX code) under Emacs. +

+ +

+To cite this journal paper use the following bibtex code. +

+
+
@article{dehaeze21_activ_dampin_rotat_platf_using,
+  author          = {Thomas Dehaeze and Christophe Collette},
+  title           = {Active Damping of Rotating Platforms Using Integral Force
+                  Feedback},
+  journal         = {Engineering Research Express},
+  year            = 2021,
+  doi             = {10.1088/2631-8695/abe803},
+  url             = {https://doi.org/10.1088/2631-8695/abe803},
+  month           = {Feb},
+}
+
+
+ +

+You can also use the formatted citation below. +

+
+

+Dehaeze, T., & Collette, C., Active damping of rotating platforms using integral force feedback, Engineering Research Express, (2021). +

+
+
+
+ +
+

Conference Paper (pdf)

+
+

+To cite this conference paper use the following bibtex code. +

+
+
@inproceedings{dehaeze20_activ_dampin_rotat_platf_integ_force_feedb,
+  author          = {Dehaeze, T. and Collette, C.},
+  title           = {Active Damping of Rotating Platforms using Integral Force
+                  Feedback},
+  booktitle       = {Proceedings of the International Conference on Modal
+                  Analysis Noise and Vibration Engineering (ISMA)},
+  year            = 2020,
+}
+
+
+ +

+You can also use the formatted citation below. +

+
+

+Dehaeze, T., & Collette, C., Active damping of rotating platforms using integral force feedback, In , Proceedings of the International Conference on Modal Analysis Noise and Vibration Engineering (ISMA) (pp. ) (2020) +

+
+
+
+ +
+

Matlab Scripts (link)

+
+

+The Matlab scripts that permits to obtain all the results presented in the paper are accessible here. +

+
+
+ +
+

Figures (link)

+
+

+All the figures in the paper are generated using either TikZ or Inkscape. The code snippets that was used to generate the figures are accessible here. +

+
+
+ +
+

Talk (link)

+
+ +
+
+
+ + diff --git a/index.org b/index.org new file mode 100644 index 0000000..f1cd807 --- /dev/null +++ b/index.org @@ -0,0 +1,59 @@ +#+TITLE: The Nano Active Stabilization System - Results on ESRF ID31 beamline +:DRAWER: +#+SUBTITLE: Dehaeze Thomas, Collette Christophe + +#+OPTIONS: toc:nil +#+OPTIONS: html-postamble:nil + +#+HTML_LINK_HOME: ../index.html +#+HTML_LINK_UP: ../index.html + +#+HTML_HEAD: +#+HTML_HEAD: +#+HTML_HEAD: +:END: + +#+begin_quote +*Abstract*: + +#+end_quote + +* Journal Paper ([[file:paper/dehaeze20_activ_dampin_rotat_platf_integ_force_feedb.pdf][pdf]]) +:PROPERTIES: +:UNNUMBERED: t +:END: + +To cite this journal paper use the following bibtex code. +#+begin_src bibtex +#+end_src + +You can also use the formatted citation below. +#+begin_quote +#+end_quote + +* Matlab Scripts ([[file:matlab/index.org][link]]) +:PROPERTIES: +:UNNUMBERED: t +:END: + +The Matlab scripts that permits to obtain all the results presented in the paper are accessible [[file:matlab/index.org][here]]. + +* Talk ([[file:talk/talk.pdf][link]]) :noexport: +:PROPERTIES: +:UNNUMBERED: t +:END: + +# #+begin_export html +# +# #+end_export + +To cite this presentation use the following bibtex code. +#+begin_src bibtex +#+end_src + +You can also use the formatted citation below. +#+begin_quote +#+end_quote diff --git a/matlab/figs-paper b/matlab/figs-paper new file mode 120000 index 0000000..30fa883 --- /dev/null +++ b/matlab/figs-paper @@ -0,0 +1 @@ +../paper/figs \ No newline at end of file diff --git a/matlab/index.org b/matlab/index.org new file mode 100644 index 0000000..65d1184 --- /dev/null +++ b/matlab/index.org @@ -0,0 +1,93 @@ +#+TITLE: The Nano Active Stabilization System - Results on ESRF ID31 beamline - Matlab Computation +:DRAWER: +#+HTML_LINK_HOME: ../index.html +#+HTML_LINK_UP: ../index.html + +#+HTML_HEAD: +#+HTML_HEAD: + +#+BIND: org-latex-image-default-option "scale=1" +#+BIND: org-latex-bib-compiler "biber" +#+BIND: org-latex-image-default-width "" + +#+LaTeX_CLASS: scrreprt +#+LaTeX_CLASS_OPTIONS: [a4paper, 10pt, DIV=12, parskip=full] +#+LaTeX_HEADER_EXTRA: \input{preamble.tex} +#+LATEX_HEADER_EXTRA: \addbibresource{ref.bib} + +#+PROPERTY: header-args:matlab :session *MATLAB* +#+PROPERTY: header-args:matlab+ :comments org +#+PROPERTY: header-args:matlab+ :exports both +#+PROPERTY: header-args:matlab+ :results none +#+PROPERTY: header-args:matlab+ :eval no-export +#+PROPERTY: header-args:matlab+ :noweb yes +#+PROPERTY: header-args:matlab+ :mkdirp yes +#+PROPERTY: header-args:matlab+ :output-dir figs +:END: + +#+begin_export html +
+

This report is also available as a pdf.

+
+#+end_export + +* Introduction :ignore: + +# The matlab code is accessible on [[https://zenodo.org/record/3894343][Zonodo]] and [[https://github.com/tdehaeze/dehaeze20_contr_stewa_platf][Github]] cite:dehaeze20_activ_dampin_rotat_posit_platf. It can also be download as a =.zip= file [[file:matlab.zip][here]]. + +# To run the Matlab code, go in the =matlab= directory and run the following Matlab files corresponding to each section. + +# #+caption: Paper's sections and corresponding Matlab files +# | Sections | Matlab File | +# |------------------------------------+----------------------------| +# | Section [[sec:system_description]] | =s1_system_description.m= | +# | Section [[sec:iff_pure_int]] | =s2_iff_pure_int.m= | +# | Section [[sec:iff_pseudo_int]] | =s3_iff_hpf.m= | +# | Section [[sec:iff_parallel_stiffness]] | =s4_iff_kp.m= | +# | Section [[sec:comparison]] | =s5_act_damp_comparison.m= | + +* System Description and Analysis +:PROPERTIES: +:header-args:matlab+: :tangle matlab/s1_system_description.m +:END: +<> + +** Matlab Init :noexport:ignore: +#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name) + <> +#+end_src + +#+begin_src matlab :exports none :results silent :noweb yes + <> +#+end_src + +#+begin_src matlab :tangle no + addpath('./matlab/'); + addpath('./src/'); +#+end_src + +* Notations +<> + +# | | Mathematical Notation | Matlab | Unit | +# |-----------------------------------+------------------------------+---------------+---------| +# | Actuator Stiffness | $k$ | =k= | N/m | +# | Actuator Damping | $c$ | =c= | N/(m/s) | +# | Payload Mass | $m$ | =m= | kg | +# | Damping Ratio | $\xi = \frac{c}{2\sqrt{km}}$ | =xi= | | +# | Actuator Force | $\bm{F}, F_u, F_v$ | =F= =Fu= =Fv= | N | +# | Force Sensor signal | $\bm{f}, f_u, f_v$ | =f= =fu= =fv= | N | +# | Relative Displacement | $\bm{d}, d_u, d_v$ | =d= =du= =dv= | m | +# | Resonance freq. when $\Omega = 0$ | $\omega_0$ | =w0= | rad/s | +# | Rotation Speed | $\Omega = \dot{\theta}$ | =W= | rad/s | +# | Low Pass Filter corner frequency | $\omega_i$ | =wi= | rad/s | + +# | | Mathematical Notation | Matlab | Unit | +# |------------------+-----------------------+--------+---------| +# | Laplace variable | $s$ | =s= | | +# | Complex number | $j$ | =j= | | +# | Frequency | $\omega$ | =w= | [rad/s] | + +* Bibliography :ignore: +# #+latex: \printbibliography +# bibliography:ref.bib diff --git a/matlab/preamble.tex b/matlab/preamble.tex new file mode 100644 index 0000000..cf596bd --- /dev/null +++ b/matlab/preamble.tex @@ -0,0 +1,114 @@ +\usepackage{float} + +\usepackage{caption,tabularx,booktabs} + +\usepackage{biblatex} + +\usepackage{fontawesome} + +\usepackage{caption} +\usepackage{subcaption} + +\captionsetup[figure]{labelfont=bf} +\captionsetup[subfigure]{labelfont=bf} +\captionsetup[listing]{labelfont=bf} +\captionsetup[table]{labelfont=bf} + +\usepackage{xcolor} + +\definecolor{my-blue}{HTML}{6b7adb} +\definecolor{my-pale-blue}{HTML}{e6e9f9} +\definecolor{my-red}{HTML}{db6b6b} +\definecolor{my-pale-red}{HTML}{f9e6e6} +\definecolor{my-green}{HTML}{6bdbb6} +\definecolor{my-pale-green}{HTML}{e6f9f3} +\definecolor{my-yellow}{HTML}{dbd26b} +\definecolor{my-pale-yellow}{HTML}{f9f7e6} +\definecolor{my-orange}{HTML}{dba76b} +\definecolor{my-pale-orange}{HTML}{f9f0e6} +\definecolor{my-grey}{HTML}{a3a3a3} +\definecolor{my-pale-grey}{HTML}{f0f0f0} +\definecolor{my-turq}{HTML}{6bc7db} +\definecolor{my-pale-turq}{HTML}{e6f6f9} + +\usepackage{inconsolata} + +\usepackage[newfloat=true, chapter]{minted} +\usemintedstyle{autumn} + +\setminted{frame=lines,breaklines=true,tabsize=4,fontsize=\scriptsize,autogobble=true,labelposition=topline,bgcolor=my-pale-grey} +\setminted[matlab]{label=Matlab} +\setminted[latex]{label=LaTeX} +\setminted[bash]{label=Bash} +\setminted[python]{label=Python} +\setminted[text]{label=Results} +\setminted[md]{label=Org Mode} + +\setmintedinline{fontsize=\normalsize,bgcolor=my-pale-grey} + +\usepackage[most]{tcolorbox} + +\tcbuselibrary{minted} + +\newtcolorbox{seealso}{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=See Also} +\newtcolorbox{hint}{ enhanced,breakable,colback=my-pale-grey,colframe=my-grey,fonttitle=\bfseries,title=Hint} +\newtcolorbox{definition}{enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Definition} +\newtcolorbox{important}{ enhanced,breakable,colback=my-pale-red, colframe=my-red, fonttitle=\bfseries,title=Important} +\newtcolorbox{exampl}[1][]{ enhanced,breakable,colback=my-pale-green,colframe=my-green,fonttitle=\bfseries,title=Example,#1} +\newtcolorbox{exercice}{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Exercice} +\newtcolorbox{question}{ enhanced,breakable,colback=my-pale-yellow,colframe=my-yellow,fonttitle=\bfseries,title=Question} +\newtcolorbox{answer}{ enhanced,breakable,colback=my-pale-turq,colframe=my-turq,fonttitle=\bfseries,title=Answer} +\newtcolorbox{summary}{ enhanced,breakable,colback=my-pale-blue,colframe=my-blue,fonttitle=\bfseries,title=Summary} +\newtcolorbox{note}{ enhanced,breakable,colback=my-pale-blue,colframe=my-blue,fonttitle=\bfseries,title=Note} +\newtcolorbox{caution}{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Caution} +\newtcolorbox{warning}{ enhanced,breakable,colback=my-pale-orange,colframe=my-orange,fonttitle=\bfseries,title=Warning} + +\newtcolorbox{my-quote}[1]{% + colback=my-pale-grey, + grow to right by=-10mm, + grow to left by=-10mm, + boxrule=0pt, + boxsep=0pt, + breakable, + enhanced jigsaw, + borderline west={4pt}{0pt}{my-grey}} + +\renewenvironment{quote}{\begin{my-quote}}{\end{my-quote}} + +\newtcolorbox{my-verse}[1]{% + colback=my-pale-grey, + grow to right by=-10mm, + grow to left by=-10mm, + boxrule=0pt, + boxsep=0pt, + breakable, + enhanced jigsaw, + borderline west={4pt}{0pt}{my-grey}} + +\renewenvironment{verse}{\begin{my-verse}}{\end{my-verse}} + +\usepackage{environ}% http://ctan.org/pkg/environ +\NewEnviron{aside}{% + \marginpar{\BODY} +} + +\renewenvironment{verbatim}{\VerbatimEnvironment\begin{minted}[]{text}}{\end{minted}} + +\usepackage{soul} +\sethlcolor{my-pale-grey} + +\let\OldTexttt\texttt +\renewcommand{\texttt}[1]{{\ttfamily\hl{\mbox{\,#1\,}}}} + +\makeatletter +\preto\Gin@extensions{png,} +\DeclareGraphicsRule{.png}{pdf}{.pdf}{\noexpand\Gin@base.pdf} +\makeatother + +\usepackage{hyperref} +\hypersetup{ + colorlinks = true, + allcolors = my-blue +} + +\usepackage{hypcap} diff --git a/matlab/ref.bib b/matlab/ref.bib new file mode 100644 index 0000000..5caa86d --- /dev/null +++ b/matlab/ref.bib @@ -0,0 +1,94 @@ +@article{collette15_sensor_fusion_method_high_perfor, + author = {C. Collette and F. Matichard}, + title = {Sensor Fusion Methods for High Performance Active Vibration Isolation Systems}, + journal = {Journal of Sound and Vibration}, + volume = {342}, + number = {nil}, + pages = {1-21}, + year = {2015}, + doi = {10.1016/j.jsv.2015.01.006}, + url = {https://doi.org/10.1016/j.jsv.2015.01.006}, + keywords = {}, +} + +@inproceedings{collette14_vibrat, + author = {Collette, C. and Matichard, F}, + title = {Vibration control of flexible structures using fusion of inertial sensors and hyper-stable actuator-sensor pairs}, + booktitle = {International Conference on Noise and Vibration Engineering (ISMA2014)}, + year = {2014}, + keywords = {}, +} + +@article{oomen18_advan_motion_contr_precis_mechat, + author = {Tom Oomen}, + title = {Advanced Motion Control for Precision Mechatronics: Control, Identification, and Learning of Complex Systems}, + journal = {IEEJ Journal of Industry Applications}, + volume = {7}, + number = {2}, + pages = {127-140}, + year = {2018}, + doi = {10.1541/ieejjia.7.127}, + url = {https://doi.org/10.1541/ieejjia.7.127}, +} + +@book{skogestad07_multiv_feedb_contr, + author = {Skogestad, Sigurd and Postlethwaite, Ian}, + title = {Multivariable Feedback Control: Analysis and Design}, + year = {2007}, + publisher = {John Wiley}, + keywords = {favorite}, +} + +@phdthesis{hua05_low_ligo, + author = {Hua, Wensheng}, + school = {stanford university}, + title = {Low frequency vibration isolation and alignment system for + advanced LIGO}, + year = 2005, +} + +@book{lurie12_class, + author = {Lurie, B. J}, + title = {Classical feedback control : with MATLAB and Simulink}, + year = 2012, + publisher = {CRC Press}, + address = {Boca Raton, FL}, + isbn = 9781439897461, + keywords = {favorite}, +} + +@techreport{bibel92_guidel_h, + author = {Bibel, John E and Malyevac, D Stephen}, + institution = {NAVAL SURFACE WARFARE CENTER DAHLGREN DIV VA}, + title = {Guidelines for the selection of weighting functions for + H-infinity control}, + year = 1992, + keywords = {}, +} + +@inproceedings{dehaeze20_activ_dampin_rotat_platf_integ_force_feedb, + author = {Dehaeze, T. and Collette, C.}, + title = {Active Damping of Rotating Platforms using Integral Force + Feedback}, + booktitle = {Proceedings of the International Conference on Modal + Analysis Noise and Vibration Engineering (ISMA)}, + year = 2020, +} + +@misc{dehaeze20_activ_dampin_rotat_posit_platf, + author = {Thomas Dehaeze}, + howpublished = {Source Code on Zonodo}, + month = 07, + title = {Active Damping of Rotating Positioning Platforms}, + url = {https://doi.org/10.5281/zenodo.3894342}, + doi = {10.5281/zenodo.3894342}, + year = 2020, +} + +@article{dehaeze21_activ_dampin_rotat_platf_using, + author = {Thomas Dehaeze and Christophe Collette}, + title = {Active Damping of Rotating Platforms Using Integral Force Feedback}, + journal = {Engineering Research Express}, + year = {2021}, + url = {http://iopscience.iop.org/article/10.1088/2631-8695/abe803}, +} diff --git a/paper/.latexmk b/paper/.latexmk new file mode 100644 index 0000000..9355a36 --- /dev/null +++ b/paper/.latexmk @@ -0,0 +1,99 @@ +#!/bin/env perl + +# Shebang is only to get syntax highlighting right across GitLab, GitHub and IDEs. +# This file is not meant to be run, but read by `latexmk`. + +# ====================================================================================== +# Perl `latexmk` configuration file +# ====================================================================================== + +# ====================================================================================== +# PDF Generation/Building/Compilation +# ====================================================================================== + +@default_files=('dehaeze24_nano_active_stabilization_system.tex'); + +# PDF-generating modes are: +# 1: pdflatex, as specified by $pdflatex variable (still largely in use) +# 2: postscript conversion, as specified by the $ps2pdf variable (useless) +# 3: dvi conversion, as specified by the $dvipdf variable (useless) +# 4: lualatex, as specified by the $lualatex variable (best) +# 5: xelatex, as specified by the $xelatex variable (second best) +$pdf_mode = 1; + +# Treat undefined references and citations as well as multiply defined references as +# ERRORS instead of WARNINGS. +# This is only checked in the *last* run, since naturally, there are undefined references +# in initial runs. +# This setting is potentially annoying when debugging/editing, but highly desirable +# in the CI pipeline, where such a warning should result in a failed pipeline, since the +# final document is incomplete/corrupted. +# +# However, I could not eradicate all warnings, so that `latexmk` currently fails with +# this option enabled. +# Specifically, `microtype` fails together with `fontawesome`/`fontawesome5`, see: +# https://tex.stackexchange.com/a/547514/120853 +# The fix in that answer did not help. +# Setting `verbose=silent` to mute `microtype` warnings did not work. +# Switching between `fontawesome` and `fontawesome5` did not help. +$warnings_as_errors = 0; + +# Show used CPU time. Looks like: https://tex.stackexchange.com/a/312224/120853 +$show_time = 1; + +# Default is 5; we seem to need more owed to the complexity of the document. +# Actual documents probably don't need this many since they won't use all features, +# plus won't be compiling from cold each time. +$max_repeat=7; + +# --shell-escape option (execution of code outside of latex) is required for the +#'svg' package. +# It converts raw SVG files to the PDF+PDF_TEX combo using InkScape. +# +# SyncTeX allows to jump between source (code) and output (PDF) in IDEs with support +# (many have it). A value of `1` is enabled (gzipped), `-1` is enabled but uncompressed, +# `0` is off. +# Testing in VSCode w/ LaTeX Workshop only worked for the compressed version. +# Adjust this as needed. Of course, only relevant for local use, no effect on a remote +# CI pipeline (except for slower compilation, probably). +# +# %O and %S will forward Options and the Source file, respectively, given to latexmk. +# +# `set_tex_cmds` applies to all *latex commands (latex, xelatex, lualatex, ...), so +# no need to specify these each. This allows to simply change `$pdf_mode` to get a +# different engine. Check if this works with `latexmk --commands`. +set_tex_cmds("--shell-escape -interaction=nonstopmode --synctex=1 %O %S"); + +# Use default pdf viewer +$pdf_previewer = 'zathura'; + +# option 2 is same as 1 (run biber when necessary), but also deletes the +# regeneratable bbl-file in a clenaup (`latexmk -c`). Do not use if original +# bib file is not available! +$bibtex_use = 2; # default: 1 + +# Change default `biber` call, help catch errors faster/clearer. See +# https://web.archive.org/web/20200526101657/https://www.semipol.de/2018/06/12/latex-best-practices.html#database-entries +$biber = "biber --validate-datamodel %O %S"; + +# ====================================================================================== +# Auxiliary Files +# ====================================================================================== + +# Let latexmk know about generated files, so they can be used to detect if a +# rerun is required, or be deleted in a cleanup. +# loe: List of Examples (KOMAScript) +# lol: List of Listings (`listings` and `minted` packages) +# run.xml: biber runs +# glg: glossaries log +# glstex: generated from glossaries-extra +push @generated_exts, 'loe', 'lol', 'run.xml', 'glg', 'glstex'; + +# Also delete the *.glstex files from package glossaries-extra. Problem is, +# that that package generates files of the form "basename-digit.glstex" if +# multiple glossaries are present. Latexmk looks for "basename.glstex" and so +# does not find those. For that purpose, use wildcard. +# Also delete files generated by gnuplot/pgfplots contour plots +# (.dat, .script, .table). +$clean_ext = "%R-*.glstex %R_contourtmp*.*"; + diff --git a/paper/config.tex b/paper/config.tex new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/paper/config.tex @@ -0,0 +1 @@ + diff --git a/paper/dehaeze24_nano_active_stabilization_system.bib b/paper/dehaeze24_nano_active_stabilization_system.bib new file mode 100644 index 0000000..18488f6 --- /dev/null +++ b/paper/dehaeze24_nano_active_stabilization_system.bib @@ -0,0 +1,38 @@ +@inproceedings{dehaeze18_sampl_stabil_for_tomog_exper, + author = {Thomas Dehaeze and M. Magnin Mattenet and Christophe + Collette}, + title = {Sample Stabilization For Tomography Experiments In Presence + Of Large Plant Uncertainty}, + booktitle = {MEDSI'18}, + year = 2018, + number = 10, + pages = {153--157}, + doi = {10.18429/JACoW-MEDSI2018-WEOAMA02}, + url = {https://doi.org/10.18429/JACoW-MEDSI2018-WEOAMA02}, + address = {Geneva, Switzerland}, + isbn = {978-3-95450-207-3}, + keywords = {nass, esrf}, + language = {english}, + month = {Dec}, + publisher = {JACoW Publishing}, + series = {Mechanical Engineering Design of Synchrotron Radiation + Equipment and Instrumentation}, + venue = {Paris, France}, +} + + + +@inproceedings{dehaeze21_mechat_approac_devel_nano_activ_stabil_system, + author = {Dehaeze, T. and Bonnefoy, J. and Collette, C.}, + title = {Mechatronics Approach for the Development of a + Nano-Active-Stabilization-System}, + booktitle = {MEDSI'20}, + year = 2021, + language = {english}, + publisher = {JACoW Publishing}, + series = {Mechanical Engineering Design of Synchrotron Radiation + Equipment and Instrumentation}, + venue = {Chicago, USA}, + keywords = {nass, esrf}, +} + diff --git a/paper/dehaeze24_nano_active_stabilization_system.org b/paper/dehaeze24_nano_active_stabilization_system.org new file mode 100644 index 0000000..b9941e6 --- /dev/null +++ b/paper/dehaeze24_nano_active_stabilization_system.org @@ -0,0 +1,119 @@ +#+TITLE: +:DRAWER: +#+LATEX_CLASS: iopconfser +#+OPTIONS: toc:nil date:nil +#+STARTUP: overview + +#+DATE: +#+AUTHOR: + +# #+LATEX_HEADER: \input{config.tex} + +#+LATEX_HEADER_EXTRA: \usepackage[backend=biber,style=iopart-num]{biblatex} +#+LATEX_HEADER_EXTRA: \addbibresource{dehaeze24_nano_active_stabilization_system.bib} +:END: + +* LaTeX Config :noexport: +#+begin_src latex :tangle config.tex + +#+end_src + +* Build :noexport: +#+name: startblock +#+BEGIN_SRC emacs-lisp :results none + (add-to-list 'org-latex-classes + '("iopconfser" + "\\documentclass{iopconfser}" + ("\\section{%s}" . "\\section*{%s}") + ("\\subsection{%s}" . "\\subsection*{%s}") + ("\\subsubsection{%s}" . "\\subsubsection*{%s}") + ("\\paragraph{%s}" . "\\paragraph*{%s}") + ("\\subparagraph{%s}" . "\\subparagraph*{%s}")) + ) + + (setq org-latex-packages-alist nil) + (setq org-latex-default-packages-alist nil) + + ;; Remove automatic org headings + (defun my-latex-filter-removeOrgAutoLabels (text backend info) + "Org-mode automatically generates labels for headings despite explicit use of `#+LABEL`. This filter forcibly removes all automatically generated org-labels in headings." + (when (org-export-derived-backend-p backend 'latex) + (replace-regexp-in-string "\\\\label{sec:org[a-f0-9]+}\n" "" text))) + + (add-to-list 'org-export-filter-headline-functions + 'my-latex-filter-removeOrgAutoLabels) + + ;; Automatic delete org org-comments + (defun delete-org-comments (backend) + (loop for comment in (reverse (org-element-map (org-element-parse-buffer) + 'comment 'identity)) + do + (setf (buffer-substring (org-element-property :begin comment) + (org-element-property :end comment)) + ""))) + + ;; add to export hook + (add-hook 'org-export-before-processing-hook 'delete-org-comments) + + ;; Remove hypersetup + (setq org-latex-with-hyperref nil) + + ;; Remove empty title as it is manually placed after "/begin{document}" + (defun my-org-latex-remove-title (str) + (replace-regexp-in-string "^\\\\title{}$" "" str)) + + (advice-add 'org-latex-template :filter-return 'my-org-latex-remove-title) + + ;; Remove empty date + (defun my-org-latex-remove-date (str) + (replace-regexp-in-string "^\\\\date{}$" "" str)) + + (advice-add 'org-latex-template :filter-return 'my-org-latex-remove-date) +#+END_SRC + +* Title :ignore: + +#+begin_export latex +\title{The Nano Active Stabilization System - Results on the ESRF ID31 Beamline} + +\author{Thomas Dehaeze$^{1,2}$ and Christophe Collette$^{2}$} + +\affil{$^1$European Synchrotron Radiation Facility Grenoble, France} +\affil{$^2$Precision Mechatronics Laboratory University of Liege, Belgium} + +\email{thomas.dehaeze@esrf.fr} +#+end_export + +* Abstract :ignore: + +# The abstract must be a single paragraph providing concise information about the content of the +# article, including the main results obtained and conclusions drawn. The abstract must not contain any +# table numbers, figure numbers, references or displayed mathematics. Leave at least 10 mm space below +# the abstract before starting the main text of your article on the same page. + +#+begin_abstract +This paper investigates... +#+end_abstract + +* Introduction +<> + +Here is the introduction ... +Some citation: +[[cite:&dehaeze18_sampl_stabil_for_tomog_exper]] +[[cite:&dehaeze21_mechat_approac_devel_nano_activ_stabil_system]] + +* Conclusion +<> + +Conclusion text + +* Acknowledgment +:PROPERTIES: +:UNNUMBERED: t +:END: + +This research benefited from a FRIA grant from the French Community of Belgium. + +* Bibliography :ignore: +\printbibliography diff --git a/paper/dehaeze24_nano_active_stabilization_system.pdf b/paper/dehaeze24_nano_active_stabilization_system.pdf new file mode 100644 index 0000000..2345a9c Binary files /dev/null and b/paper/dehaeze24_nano_active_stabilization_system.pdf differ diff --git a/paper/dehaeze24_nano_active_stabilization_system.tex b/paper/dehaeze24_nano_active_stabilization_system.tex new file mode 100644 index 0000000..ec66090 --- /dev/null +++ b/paper/dehaeze24_nano_active_stabilization_system.tex @@ -0,0 +1,43 @@ +% Created 2024-08-05 Mon 15:57 +% Intended LaTeX compiler: pdflatex +\documentclass{iopconfser} + +\usepackage[backend=biber]{biblatex} + +\addbibresource{dehaeze24_nano_active_stabilization_system.bib} + + +\begin{document} + + +\title{The Nano Active Stabilization System - Results on the ESRF ID31 Beamline} + +\author{Thomas Dehaeze$^{1,2}$ and Christophe Collette$^{2}$} + +\affil{$^1$European Synchrotron Radiation Facility Grenoble, France} +\affil{$^2$Precision Mechatronics Laboratory University of Liege, Belgium} + +\email{thomas.dehaeze@esrf.fr} + +\begin{abstract} +This paper investigates\ldots{} +\end{abstract} + +\section{Introduction} +\label{sec:introduction} + +Here is the introduction \ldots{} +Some citation: +\cite{dehaeze18_sampl_stabil_for_tomog_exper} +\cite{dehaeze21_mechat_approac_devel_nano_activ_stabil_system} + +\section{Conclusion} +\label{sec:conclusion} + +Conclusion text + +\section*{Acknowledgment} +This research benefited from a FRIA grant from the French Community of Belgium. + +\printbibliography +\end{document} diff --git a/paper/iopart-num.bst b/paper/iopart-num.bst new file mode 100644 index 0000000..cc46b18 --- /dev/null +++ b/paper/iopart-num.bst @@ -0,0 +1,1722 @@ +% iopart-num.bst -- BibTeX style for IOP journals (Harvard-like numeric style) +% M. A. Caprio +% +% DESCRIPTION +% +% Further documenation may be found in iopart-num.pdf. +% +% Available from CTAN as /biblio/bibtex/contrib/iopart-num. +% +% COPYRIGHT/LICENSE +% +% Copyright 2009 M. A. Caprio +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3 of this license or (at your option) any later +% version. The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of +% LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work is the author. +% +% The contents of this work are listed in the README file. +% +% HISTORY +% +% Version 1.0 (2005/07/11) +% Created using custom-bib (merlin.mbs), with following manual modifications: +% -- remove trailing period from predefined volume, page, etc., abbreviations +% -- provide command \newblock to fix incompatibility between natbib +% and iopart (as of iopart version 1996/06/10) +% -- move edition after booktitle +% -- add version identifier to generated output +% -- for incollection and inproceedings, move volume from after publisher to before +% -- for any series with number, number after series +% Version 2.0 (2006/12/21) +% -- define section field for proper formatting of lettered journal sections +% (suggested by Chris Latham) +% -- suppress printing of number for article, but provide issue field +% for periodicals with issue-based page numbering (suggested by Chris Latham) +% -- patch remove.dots to not strip "\." control sequence (bug reported by Kevin Bube) +% -- define epilog field (undocumented) +% -- delete predefined computer science journal names +% -- bring book volume+number or series+number formatting into IOP form +% -- for book, inbook, and proceedings with editors but no author, fix formating of editors +% -- for incollection and inproceedings, put editors in correct location +% -- for journal: use same page formatting even if volume missing +% Version 2.1 (2009/01/22) +% -- for incollection and inproceedings: support title of chapter (not appropriate +% to inbook) +% -- for book, proceedings, etc.: support volumetitle for multivolume book +% +% LIMITATIONS +% +% Still not in IOP form: +% -- for incollection and inproceedings, editors initials should preceed rather +% than follow last name +% Other: +% -- hyphenated first names lose hyphen + +%% This is file `iopart-num.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% merlin.mbs (with options: `seq-no,nm-rv,dt-beg,yr-blk,xmth,yrp-x,jtit-x,vol-bf,volp-blk,num-xser,jnm-x,add-pub,pub-par,pre-pub,isbn,issn,blk-com,com-blank,fin-bare,pp,ed,abr,ednx,mth-bare,ord,jabr,and-xcom,etal-it,revdata,eprint,url,url-blk') +%% ---------------------------------------- +%% *** Institute of Physics (IOP) journals; Harvard-like numeric style *** +%% +%% Copyright 1994-2002 Patrick W Daly + % =============================================================== + % IMPORTANT NOTICE: + % This bibliographic style (bst) file has been generated from one or + % more master bibliographic style (mbs) files, listed above. + % + % This generated file can be redistributed and/or modified under the terms + % of the LaTeX Project Public License Distributed from CTAN + % archives in directory macros/latex/base/lppl.txt; either + % version 1 of the License, or any later version. + % =============================================================== + % Name and version information of the main mbs file: + % \ProvidesFile{merlin.mbs}[2002/10/21 4.05 (PWD, AO, DPC)] + % For use with BibTeX version 0.99a or later + %------------------------------------------------------------------- + % This bibliography style file is intended for texts in ENGLISH + % This is a numerical citation style, and as such is standard LaTeX. + % It requires no extra package to interface to the main text. + % The form of the \bibitem entries is + % \bibitem{key}... + % Usage of \cite is as follows: + % \cite{key} ==>> [#] + % \cite[chap. 2]{key} ==>> [#, chap. 2] + % where # is a number determined by the ordering in the reference list. + % The order in the reference list is that by which the works were originally + % cited in the text, or that in the database. + %--------------------------------------------------------------------- + +ENTRY + { address + archive + author + booktitle + chapter + collaboration + edition + editor + eid + eprint + howpublished + institution + isbn + issn + journal + key + month + note + number + numpages + organization + pages + publisher + school + series + title + type + url + volume + year +%mc + issue + section + epilog + volumetitle + transjournal + transsection + transvolume + transnumber + transissue + transpages + transyear + } + {} + { label } + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% mc utilities +% require merlin.mbs logical operators and field.or.null +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% hang -- {hang} suspends execution, for debugging purposes +% Note that not all pending output may have been flushed. +FUNCTION {hang} +{ + {#1} {skip$} while$ +} + +% string.length -- {s string.length} returns the true character length of s +% In contrast, text.length$ gives special treatment to LaTeX +% accents ("special characters") and braces. +% Example: "" string.length -> 0 +% Example: "hello" string.length -> 5 + +STRINGS {string.length.s } +INTEGERS {string.length.i } +FUNCTION {string.length} +{ + 'string.length.s := + #0 'string.length.i := + { + string.length.s #1 #1 substring$ "" = not + } + { + string.length.i #1 + 'string.length.i := + string.length.s #2 global.max$ substring$ 'string.length.s := + } + while$ + string.length.i +} + +% shared working variables for stripping functions +STRINGS { strip.s strip.t } +INTEGERS { strip.i } + +% strip.leading -- {s t strip.leading} strips t from s if it appears +% as an initial substring +% Example: "abcdef" "abc" strip.leading -> "def" +% Example: "abcdef" "xyz" strip.leading -> "abcdef" + +FUNCTION{strip.leading} +{ + 'strip.t := + 'strip.s := + strip.t string.length 'strip.i := + strip.s #1 strip.i substring$ strip.t = + { strip.s strip.i #1 + global.max$ substring$ } + { strip.s } + if$ +} + +% strip.trailing -- {s t strip.trailing} strips t from s if it appears +% as a terminal substring +% Example: "abcdef" "def" strip.trailing -> "abc" +% Example: "abcdef" "xyz" strip.trailing -> "abcdef" +FUNCTION{strip.trailing} +{ + 'strip.t := + 'strip.s := + strip.t string.length 'strip.i := + strip.s #-1 strip.i substring$ strip.t = + { strip.s #-1 strip.i - global.max$ substring$ } + { strip.s } + if$ +} + +% trim -- {s trim} strips any trailing whitespace from s +% Example: "abcdef " trim -> "abcdef" +STRINGS {trim.s trim.t} +FUNCTION{trim} +{ + 'trim.s := + { + trim.s #-1 #1 substring$ 'trim.t := + trim.t empty$ trim.t string.length #0 > and + } + { trim.s #-2 global.max$ substring$ 'trim.s := } + while$ + trim.s +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} +STRINGS { s t} + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { " " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +%mc +FUNCTION {format.epilog} +{ epilog duplicate$ empty$ + { pop$ } + { * } + if$ +} +%mc end + + +FUNCTION {fin.entry} +{ +%mc +format.epilog +%mc end + duplicate$ empty$ + 'pop$ + 'write$ + if$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} +FUNCTION {add.blank} +{ " " * before.all 'output.state := +} + +FUNCTION {date.block} +{ + add.blank +} + +STRINGS {z} +FUNCTION {remove.dots} +{ 'z := + "" + { z empty$ not } + { +%mc patch to preserve the control sequence \. if it appears in a name + z #1 #2 substring$ "\." = + { + % process "\." sequence + z #3 global.max$ substring$ 'z := + "\." * + } + { + % process regular character + z #1 #1 substring$ + z #2 global.max$ substring$ 'z := + duplicate$ "." = 'pop$ + { * } + if$ + } + if$ +%mc + } + while$ +} +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "\/}" * } + if$ +} +FUNCTION {bolden} +{ duplicate$ empty$ + { pop$ "" } + { "{\bf " swap$ * "}" * } + if$ +} +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} + +FUNCTION {capitalize} +{ "u" change.case$ "t" change.case$ } + +FUNCTION {space.word} +{ " " swap$ * " " * } + % Here are the language-specific definitions for explicit words. + % Each function has a name bbl.xxx where xxx is the English word. + % The language selected here is ENGLISH +FUNCTION {bbl.and} +{ "and"} + +FUNCTION {bbl.etal} +{ "et~al." } + +FUNCTION {bbl.editors} +{ "eds" } + +FUNCTION {bbl.editor} +{ "ed" } + +FUNCTION {bbl.edby} +{ "edited by" } + +FUNCTION {bbl.edition} +{ "ed" } + +FUNCTION {bbl.volume} +{ "vol" } + +FUNCTION {bbl.of} +{ "of" } + +FUNCTION {bbl.number} +{ "no" } + +FUNCTION {bbl.nr} +{ "no" } + +FUNCTION {bbl.in} +{ "in" } + +FUNCTION {bbl.pages} +{ "pp" } + +FUNCTION {bbl.page} +{ "p" } + +FUNCTION {bbl.eidpp} +{ "pages" } + +FUNCTION {bbl.chapter} +{ "chap" } + +FUNCTION {bbl.techrep} +{ "Tech. Rep." } + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "Ph.D. thesis" } + +FUNCTION {bbl.first} +{ "1st" } + +FUNCTION {bbl.second} +{ "2nd" } + +FUNCTION {bbl.third} +{ "3rd" } + +FUNCTION {bbl.fourth} +{ "4th" } + +FUNCTION {bbl.fifth} +{ "5th" } + +FUNCTION {bbl.st} +{ "st" } + +FUNCTION {bbl.nd} +{ "nd" } + +FUNCTION {bbl.rd} +{ "rd" } + +FUNCTION {bbl.th} +{ "th" } + +MACRO {jan} {"Jan."} + +MACRO {feb} {"Feb."} + +MACRO {mar} {"Mar."} + +MACRO {apr} {"Apr."} + +MACRO {may} {"May"} + +MACRO {jun} {"Jun."} + +MACRO {jul} {"Jul."} + +MACRO {aug} {"Aug."} + +MACRO {sep} {"Sep."} + +MACRO {oct} {"Oct."} + +MACRO {nov} {"Nov."} + +MACRO {dec} {"Dec."} + +FUNCTION {eng.ord} +{ duplicate$ "1" swap$ * + #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ + duplicate$ "1" = + { pop$ bbl.st * } + { duplicate$ "2" = + { pop$ bbl.nd * } + { "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {bibinfo.check} +{ swap$ + duplicate$ missing$ + { + pop$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ pop$ + } + { swap$ + pop$ + } + if$ + } + if$ +} +FUNCTION {bibinfo.warn} +{ swap$ + duplicate$ missing$ + { + swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ "empty " swap$ * " in " * cite$ * warning$ + } + { swap$ + pop$ + } + if$ + } + if$ +} +%% FUNCTION {format.eprint} +%% { eprint duplicate$ empty$ +%% 'skip$ +%% { "\eprint" +%% archive empty$ +%% 'skip$ +%% { "[" * archive * "]" * } +%% if$ +%% "{" * swap$ * "}" * +%% } +%% if$ +%% } +FUNCTION {format.eprint} +{ eprint duplicate$ empty$ + 'skip$ + { + "(\textit{Preprint} " + swap$ + "\eprint" + archive empty$ + 'skip$ + { "[" * archive * "]" * } + if$ + "{" * swap$ * "}" * + * + ")" + * + } + if$ +} + +FUNCTION {format.url} +{ url empty$ + { "" } + { "\urlprefix\url{" url * "}" * } + if$ +} + +STRINGS { bibinfo} +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}{ jj}{ f{~}}" + format.name$ + remove.dots + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " " * bbl.etal emphasize * + } + { + bbl.and + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} +FUNCTION {format.names.ed} +{ + 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{f{~}~}{vv~}{ll}{ jj}" + format.name$ + remove.dots + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + + " " * bbl.etal emphasize * + } + { + bbl.and + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} +FUNCTION {format.authors} +{ author "author" format.names + duplicate$ empty$ 'skip$ + { collaboration "collaboration" bibinfo.check + duplicate$ empty$ 'skip$ + { " (" swap$ * ")" * } + if$ + * + } + if$ +} +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { +%% "," * +%% " " * +%% get.bbl.editor +%% * +%mc + " " * + "(" * + get.bbl.editor + * + ")" * +%mc end + } + if$ +} +%mc +FUNCTION {format.editors.inline} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { + bbl.editor " " * + swap$ + * + } + if$ +} +%mc end + +FUNCTION {format.isbn} +{ isbn "isbn" bibinfo.check + duplicate$ empty$ 'skip$ + { + "ISBN " swap$ * + } + if$ +} + +FUNCTION {format.issn} +{ issn "issn" bibinfo.check + duplicate$ empty$ 'skip$ + { + "ISSN " swap$ * + } + if$ +} + +FUNCTION {format.note} +{ + note empty$ + { "" } + { note #1 #1 substring$ + duplicate$ "{" = + 'skip$ + { output.state mid.sentence = + { "l" } + { "u" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + } + if$ +} + +FUNCTION {format.title} +{ title + duplicate$ empty$ 'skip$ + { "t" change.case$ } + if$ + "title" bibinfo.check +} +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {n.dashify} +{ + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {word.in} +{ bbl.in + " " * } + +FUNCTION {format.date} +{ + "" + duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ 'skip$ + { "there's a month but no year in " cite$ * warning$ } + if$ + * + } + { swap$ 'skip$ + { + swap$ + " " * swap$ + } + if$ + * + remove.dots + } + if$ + duplicate$ empty$ + 'skip$ + { + before.all 'output.state := + " " swap$ * + } + if$ +} +FUNCTION {format.btitle} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { + emphasize + } + if$ +} +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} +FUNCTION {format.bvolume} +{ volume empty$ + % no volume: return blank + { "" } +%% { bbl.volume volume tie.or.space.prefix +%% "volume" bibinfo.check * * +%% series "series" bibinfo.check +%% duplicate$ empty$ 'pop$ +%% { swap$ bbl.of space.word * swap$ +%% emphasize * } +%% if$ +%% "volume and number" number either.or.check +%% } +%mc + { + series "series" bibinfo.check + empty$ + % no series: must be multivolume book + { + bbl.volume volume tie.or.space.prefix "volume" bibinfo.check * * + volumetitle empty$ + 'skip$ + % volumetitle: book volume has title + { " " volumetitle "volumetitle" bibinfo.check emphasize * * } + if$ + } + % series: format as volume in series + { + "(" + series "series" bibinfo.check emphasize * + " " * bbl.volume * + volume tie.or.space.prefix "volume" bibinfo.check * + ")" * * + } + if$ + "volume and number" number either.or.check + } +%mc end + if$ +} +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { series empty$ + { number "number" bibinfo.check } + { + %% output.state mid.sentence = + %% { bbl.number } + %% { bbl.number capitalize } + %% if$ + %% number tie.or.space.prefix "number" bibinfo.check * * + %% bbl.in space.word * + %% series "series" bibinfo.check * + %% " " * bbl.number * + %% number tie.or.space.prefix "number" bibinfo.check * * +%mc + "(" + series "series" bibinfo.check emphasize * + " " * bbl.number * + number tie.or.space.prefix "number" bibinfo.check * + ")" * + * +%mc end + } + if$ + } + if$ + } + { "" } + if$ +} + + +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +FUNCTION {convert.edition} +{ extract.num "l" change.case$ 's := + s "first" = s "1" = or + { bbl.first 't := } + { s "second" = s "2" = or + { bbl.second 't := } + { s "third" = s "3" = or + { bbl.third 't := } + { s "fourth" = s "4" = or + { bbl.fourth 't := } + { s "fifth" = s "5" = or + { bbl.fifth 't := } + { s #1 #1 substring$ is.num + { s eng.ord 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} + +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { + convert.edition + output.state mid.sentence = + { "l" } + { "t" } + if$ change.case$ + "edition" bibinfo.check + " " * bbl.edition * + } + if$ +} +INTEGERS { multiresult } +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { duplicate$ multi.page.check + { + bbl.pages swap$ + n.dashify + } + { + bbl.page swap$ + } + if$ + tie.or.space.prefix + "pages" bibinfo.check + * * + } + if$ +} +FUNCTION {format.journal.pages} +{ pages duplicate$ empty$ 'pop$ +%mc { swap$ duplicate$ empty$ +%mc { pop$ pop$ format.pages } +%mc { +%mc " " * +%mc swap$ +%mc n.dashify +%mc "pages" bibinfo.check +%mc * +%mc } +%mc if$ +%mc } + { swap$ + " " * + swap$ + n.dashify + "pages" bibinfo.check + * + } + if$ +} +FUNCTION {format.journal.eid} +{ eid "eid" bibinfo.check + duplicate$ empty$ 'skip$ + { swap$ duplicate$ empty$ 'skip$ + { + " " * + } + if$ + swap$ + numpages empty$ 'skip$ + { bbl.eidpp numpages tie.or.space.prefix + "numpages" bibinfo.check * * + " (" swap$ * ")" * * + } + if$ + } + if$ * +} +FUNCTION {format.vol.num.pages} +{ volume field.or.null +%mc section handling + section field.or.null strip.leading + section field.or.null strip.trailing trim +%mc end + duplicate$ empty$ 'skip$ + { + "volume" bibinfo.check + } + if$ + bolden +%mc number "number" bibinfo.check duplicate$ empty$ 'skip$ + issue "issue" bibinfo.check duplicate$ empty$ 'skip$ + { + swap$ duplicate$ empty$ +%mc { "there's a number but no volume in " cite$ * warning$ } + { "there's an issue but no volume in " cite$ * warning$ } + 'skip$ + if$ + swap$ + "(" swap$ * ")" * + } + if$ * + eid empty$ + { format.journal.pages } + { format.journal.eid } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.booktitle} +{ + booktitle "booktitle" bibinfo.check + emphasize +} +%% FUNCTION {format.in.ed.booktitle} +%% { format.booktitle duplicate$ empty$ 'skip$ +%% { +%% editor "editor" format.names.ed duplicate$ empty$ 'pop$ +%% { +%% "," * +%% " " * +%% get.bbl.editor +%% ", " * +%% * swap$ +%% * } +%% if$ +%% word.in swap$ * +%% } +%% if$ +%% } +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} +FUNCTION {format.thesis.type} +{ type duplicate$ empty$ + 'pop$ + { swap$ pop$ + "t" change.case$ "type" bibinfo.check + } + if$ +} +FUNCTION {format.tr.number} +{ number "number" bibinfo.check + type duplicate$ empty$ + { pop$ bbl.techrep } + 'skip$ + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ "t" change.case$ } + { tie.or.space.prefix * * } + if$ +} +FUNCTION {format.article.crossref} +{ + key duplicate$ empty$ + { pop$ + journal duplicate$ empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * warning$ } + { "journal" bibinfo.check emphasize word.in swap$ * } + if$ + } + { word.in swap$ * " " *} + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + "editor" bibinfo.check + editor num.names$ duplicate$ + #2 > + { pop$ + "editor" bibinfo.check + " " * bbl.etal + emphasize + * + } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { + "editor" bibinfo.check + " " * bbl.etal + emphasize + * + } + { + bbl.and space.word + * editor #2 "{vv~}{ll}" format.name$ + "editor" bibinfo.check + * + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume duplicate$ empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + pop$ word.in + } + { bbl.volume + swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { series emphasize * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.incoll.inproc.crossref} +{ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { format.booktitle duplicate$ empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + } + { word.in swap$ * } + if$ + } + { word.in key * " " *} + if$ + } + { word.in format.crossref.editor * " " *} + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.org.or.pub} +{ 't := + "" + address empty$ t empty$ and + 'skip$ + { + add.blank "(" * + address "address" bibinfo.check * + t empty$ + 'skip$ + { address empty$ + 'skip$ + { ": " * } + if$ + t * + } + if$ + ")" * + } + if$ +} +FUNCTION {format.publisher.address} +{ publisher "publisher" bibinfo.warn format.org.or.pub +} + +FUNCTION {format.organization.address} +{ organization "organization" bibinfo.check format.org.or.pub +} + + + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + format.date "year" output.check + date.block + crossref missing$ + { +%mc add section handling +%mc journal +%mc "journal" bibinfo.check +%mc emphasize +%mc "journal" output.check +%mc add.blank + journal + "journal" bibinfo.check + section field.or.null strip.trailing trim + emphasize + "journal" output.check + add.blank + section empty$ + { skip$ } + { section * add.blank} + if$ +%mc end + format.vol.num.pages output + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + format.issn output + format.note output + format.eprint output + format.url output + fin.entry +} +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.date "year" output.check + date.block + format.btitle "title" output.check + format.edition output + crossref missing$ + { format.bvolume output + format.number.series output + format.publisher.address output + } + { + format.book.crossref output.nonnull + } + if$ + %% format.edition output + format.isbn output + format.note output + format.eprint output + format.url output + fin.entry +} +FUNCTION {booklet} +{ output.bibitem + format.authors output + format.date output + date.block + format.title "title" output.check + howpublished "howpublished" bibinfo.check output + address "address" bibinfo.check output + format.isbn output + format.note output + format.eprint output + format.url output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.date "year" output.check + date.block + format.btitle "title" output.check + crossref missing$ + { + format.bvolume output + format.publisher.address output + %% format.bvolume output + format.chapter.pages "chapter and pages" output.check + format.number.series output + } + { + format.chapter.pages "chapter and pages" output.check + format.book.crossref output.nonnull + } + if$ + format.edition output + crossref missing$ + { format.isbn output } + 'skip$ + if$ + format.note output + format.eprint output + format.url output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + format.date "year" output.check + date.block + format.title "title" output.check + crossref missing$ + { + %% format.in.ed.booktitle "booktitle" output.check +%mc + format.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.editors.inline output +%mc end + format.publisher.address output + %% format.bvolume output + %% format.number.series output + format.chapter.pages output + format.edition output + format.isbn output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + format.note output + format.eprint output + format.url output + fin.entry +} +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + format.date "year" output.check + date.block + format.title "title" output.check + crossref missing$ + { + + %%format.in.ed.booktitle "booktitle" output.check +%mc + format.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.editors.inline output +%mc end + publisher empty$ + { format.organization.address output } + { organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + %% format.bvolume output + %% format.number.series output + format.pages output + format.isbn output + format.issn output + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + format.note output + format.eprint output + format.url output + fin.entry +} +FUNCTION {conference} { inproceedings } +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization "organization" bibinfo.check + duplicate$ empty$ 'pop$ + { output + address "address" bibinfo.check output + } + if$ + } + { format.authors output.nonnull } + if$ + format.date output + date.block + format.btitle "title" output.check + author empty$ + { organization empty$ + { + address "address" bibinfo.check output + } + 'skip$ + if$ + } + { + organization "organization" bibinfo.check output + address "address" bibinfo.check output + } + if$ + format.edition output + format.note output + format.eprint output + format.url output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + format.date "year" output.check + date.block + format.btitle + "title" output.check + bbl.mthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output + format.note output + format.eprint output + format.url output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + format.date output + format.title output + howpublished "howpublished" bibinfo.check output + format.note output + format.eprint output + format.url output + fin.entry + empty.misc.check +} +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + format.date "year" output.check + date.block + format.btitle + "title" output.check + bbl.phdthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output + format.note output + format.eprint output + format.url output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization "organization" bibinfo.check output + } + { format.editors output.nonnull } + if$ + format.date "year" output.check + date.block + format.btitle "title" output.check + format.bvolume output + format.number.series output + editor empty$ + { publisher empty$ + 'skip$ + { + format.publisher.address output + } + if$ + } + { publisher empty$ + { + format.organization.address output } + { + organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + } + if$ + format.isbn output + format.issn output + format.note output + format.eprint output + format.url output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + format.date "year" output.check + date.block + format.title + "title" output.check + format.tr.number output.nonnull + institution "institution" bibinfo.warn output + address "address" bibinfo.check output + format.note output + format.eprint output + format.url output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + format.date output + date.block + format.title "title" output.check + format.note "note" output.check + format.eprint output + format.url output + fin.entry +} + +FUNCTION {default.type} { misc } +READ +STRINGS { longest.label } +INTEGERS { number.label longest.label.width } +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} +EXECUTE {initialize.longest.label} +ITERATE {longest.label.pass} +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\providecommand{\newblock}{}" + write$ newline$ + "\begin{thebibliography}{" longest.label * "}" * + write$ newline$ + "\expandafter\ifx\csname url\endcsname\relax" + write$ newline$ + " \def\url#1{{\tt #1}}\fi" + write$ newline$ + "\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi" + write$ newline$ + "\providecommand{\eprint}[2][]{\url{#2}}" + write$ newline$ + "% Bibliography created with iopart-num v2.1" + write$ newline$ + "% /biblio/bibtex/contrib/iopart-num" + write$ newline$ +} +EXECUTE {begin.bib} +EXECUTE {init.state.consts} +ITERATE {call.type$} +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} +EXECUTE {end.bib} +%% End of customized bst file +%% +%% End of file `iopart-num.bst'. diff --git a/paper/iopconfser.cls b/paper/iopconfser.cls new file mode 100644 index 0000000..74e392a --- /dev/null +++ b/paper/iopconfser.cls @@ -0,0 +1,99 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{iopconfser}[2022/11/30 IOP Conference Series LaTeX template] + +\LoadClass[a4paper]{article} + + +% Margin settings +\setlength{\hoffset}{0mm} +\setlength{\marginparsep}{0mm} +\setlength{\marginparwidth}{0mm} +\setlength{\textwidth}{160mm} +\setlength{\oddsidemargin}{-0.4mm} +\setlength{\evensidemargin}{-0.4mm} +\setlength{\voffset}{0mm} +\setlength{\headheight}{8mm} +\setlength{\headsep}{5mm} +\setlength{\footskip}{0mm} +\setlength{\textheight}{230mm} +\setlength{\topmargin}{1.6mm} + +% More length definitions +\setlength\maxdepth{.5\topskip} +\setlength\@maxdepth\maxdepth +\setlength\footnotesep{8.4\p@} +\setlength{\skip\footins} {10.8\p@ \@plus 4\p@ \@minus 2\p@} +\setlength\floatsep {14\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\textfloatsep {24\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\intextsep {16\p@ \@plus 4\p@ \@minus 4\p@} +\setlength\dblfloatsep {16\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\dbltextfloatsep{24\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\@fptop{0\p@} +\setlength\@fpsep{10\p@ \@plus 1fil} +\setlength\@fpbot{0\p@} +\setlength\@dblfptop{0\p@} +\setlength\@dblfpsep{10\p@ \@plus 1fil} +\setlength\@dblfpbot{0\p@} +\setlength\partopsep{3\p@ \@plus 2\p@ \@minus 2\p@} + +% Set indent for front matter +\renewenvironment{quote}% + {\list{}{\leftmargin=25mm}\item\relax}% + {\endlist} + +% Clear the header and footer + +\pagestyle{empty} + +% Styles for front matter + +\renewcommand{\title}[1]{\vspace*{25mm}{\exhyphenpenalty=10000\hyphenpenalty=10000 + \fontsize{18}{24}\selectfont\bf\noindent\raggedright + \textsf{#1}\par}} + + +\renewcommand{\author}[1]{\vspace*{1.5pc}% + \fontsize{11}{13} + \begin{quote}\raggedright \textbf{#1}\end{quote}} + +\newcommand{\affil}[1]{\fontsize{10}{11}\selectfont + \begin{quote}\raggedright #1\end{quote} + \vspace*{-22pt}} + +\newcommand{\email}[1]{\vspace*{12pt}\fontsize{10}{11}\selectfont + \begin{quote}\raggedright E-mail: #1\end{quote} + \vspace*{-22pt}} + +\renewenvironment{abstract}{% + \vspace{16pt plus3pt minus3pt} + \begin{quote} + \bfseries \abstractname.\quad\rm\ignorespaces} + {\end{quote}\vspace{5mm}} + +% Section titles + +\renewcommand\section{\@startsection {section}{1}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1sp}% + {\reset@font\normalsize\bfseries\raggedright}} +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {1sp}% + {\reset@font\normalsize\itshape\raggedright}} +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-3.25ex\@plus -1ex \@minus -.2ex}% + {-1em \@plus .2em}% + {\reset@font\normalsize\itshape}} +\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {3.25ex \@plus1ex \@minus.2ex}% + {-1em}% + {\reset@font\normalsize\itshape}} +\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}% + {3.25ex \@plus1ex \@minus .2ex}% + {-1em}% + {\reset@font\normalsize\itshape}} + + + + +\endinput \ No newline at end of file diff --git a/readme.org b/readme.org new file mode 120000 index 0000000..2292ba3 --- /dev/null +++ b/readme.org @@ -0,0 +1 @@ +index.org \ No newline at end of file