Difference between revisions of "User:Wolfgang Schuster"

From Wiki
Jump to navigation Jump to search
(Imposition styles)
Line 64: Line 64:
  
 
\installpagearrangement FLASHCARD
 
\installpagearrangement FLASHCARD
{\dosetuparrangement\@@ppnx\@@ppny{\numexpr\@@ppxy*2\relax}{\numexpr
+
  {\dosetuparrangement\@@ppnx\@@ppny{\numexpr\@@ppxy*2\relax}%
\@@ppnx+\plusone\relax}{\numexpr\@@ppny+\plusone\relax}%
+
  {\numexpr\@@ppnx+\plusone\relax}{\numexpr\@@ppny+\plusone\relax}%
\pusharrangedpageFLASHCARD\poparrangedpagesAB\relax}
+
  \pusharrangedpageFLASHCARD\poparrangedpagesAB\relax}
  
 
\newcounter\arrangedpageshiftX
 
\newcounter\arrangedpageshiftX
Line 127: Line 127:
 
<texcode>
 
<texcode>
 
\installpagearrangement LEAFLET
 
\installpagearrangement LEAFLET
{\dosetuparrangement\@@ppnx1{\numexpr\@@ppnx*2\relax}{\numexpr\@@ppnx+
+
  {\dosetuparrangement\@@ppnx1{\numexpr\@@ppnx*2\relax}{\numexpr\@@ppnx+\plusone\relax}2%
\plusone\relax}2% \pusharrangedpageLEAFLET\poparrangedpagesAB\relax}
+
  \pusharrangedpageLEAFLET\poparrangedpagesAB\relax}
  
 
\def\pusharrangedpageLEAFLET#1%
 
\def\pusharrangedpageLEAFLET#1%

Revision as of 11:35, 11 July 2008

Sample Code

Full page figures

The following macro allows me to include figures in my document and adjust them to have the size of a normal page.

\unprotect

\definesystemvariable{xx}

\def\fullpagebox
  {\dosingleempty\dofullpagebox}

\def\dofullpagebox[#1]%
  {\bgroup
   \getparameters[\??xx][\c!nx=1,\c!ny=1,#1]%
   \dowithnextbox
     {\!!widtha\dimexpr\paperwidth/\nextboxwd\relax
      \!!widthb\dimexpr\paperheight/\nextboxht\relax
      \ifdim\!!widtha>\!!widthb
        \setbox\nextbox\vbox\!!to\@@xxny\paperheight
          {\vss\expanded{\scale[\c!width=\@@xxnx\paperwidth]{\flushnextbox}}\vss}%
      \else
        \setbox\nextbox\hbox\!!to\@@xxnx\paperwidth
          {\hss\expanded{\scale[\c!height=\@@xxny\paperheight]{\flushnextbox}}\hss}%
      \fi
      \setbox\nextbox\hbox{\clip[\c!width=\@@xxnx\paperwidth,\c!height=\@@xxny\paperheight]{\flushnextbox}}%
      \startTEXpage
      \flushnextbox
      \stopTEXpage
      \egroup}%
   \hbox}

\def\fullpagefigure
  {\dodoubleempty\dofullpagefigure}

\def\dofullpagefigure[#1][#2]%
  {\ifsecondargument
     \fullpagebox[#1]{\externalfigure[#2]}%
   \else
     \fullpagebox[]{\externalfigure[#1]}%
   \fi}

\protect

\starttext

\fullpagefigure[image]

\fullpagefigure[nx=2][image]

\fullpagefigure[ny=2][image]

\stoptext

Flashcards

For tests and vocabulary it is usefull to use flashcards for learning.

\unprotect

\installpagearrangement FLASHCARD
  {\dosetuparrangement\@@ppnx\@@ppny{\numexpr\@@ppxy*2\relax}%
   {\numexpr\@@ppnx+\plusone\relax}{\numexpr\@@ppny+\plusone\relax}%
   \pusharrangedpageFLASHCARD\poparrangedpagesAB\relax}

\newcounter\arrangedpageshiftX
\newcounter\arrangedpageshiftY

\def\dopusharrangedpageFLASHCARD#1%
 {\ifnum\arrangedpageshiftX<\arrangedpageX
    \ifodd\arrangedpageN
      \handlearrangedpageXandY{#1}0\arrangedpageshiftX\arrangedpageshiftY\arrangedpageA
    \else
      \handlearrangedpageXandY{#1}0{\numexpr\@@ppnx-\arrangedpageshiftX-1\relax}\arrangedpageshiftY\arrangedpageB
      \doglobal\increment\arrangedpageshiftX
    \fi
  \fi
  \ifnum\arrangedpageshiftX=\@@ppnx
    \doglobal\newcounter\arrangedpageshiftX
    \doglobal\increment\arrangedpageshiftY
  \fi}

\def\pusharrangedpageFLASHCARD#1%
 {\doglobal\increment\arrangedpageN
  \reportarrangedpage\arrangedpageN
  \ifnum\arrangedpageN=\numexpr\@@ppxy*2\relax
    \dopusharrangedpageFLASHCARD{#1}%
    \doglobal\newcounter\arrangedpageshiftX
    \doglobal\newcounter\arrangedpageshiftY
    \poparrangedpages
  \else
    \dopusharrangedpageFLASHCARD{#1}%
  \fi}

\protect

To create cards you have to select a number of rows and columns and set the papersize to a value small enough to fit all cards on one sheet of paper.

\setuppapersize[A7][A3,landscape]
\setuppaper    [nx=4,ny=2]
\setuparranging[FLASHCARD]
\setuplayout   [location=middle,marking=on]

\setupbackgrounds[page][frame=on]

\starttext

\dorecurse{20}
 {\startstandardmakeup[align=middle]
  Front side \recurselevel
  \stopstandardmakeup
  \startstandardmakeup[align=middle]
  Back side \recurselevel
  \stopstandardmakeup}

\stoptext

Brochures

\installpagearrangement LEAFLET
  {\dosetuparrangement\@@ppnx1{\numexpr\@@ppnx*2\relax}{\numexpr\@@ppnx+\plusone\relax}2%
   \pusharrangedpageLEAFLET\poparrangedpagesAB\relax}

\def\pusharrangedpageLEAFLET#1%
 {\doglobal\increment\arrangedpageN
  \reportarrangedpage\arrangedpageN
  \ifnum\arrangedpageN=\plusone
    \handlearrangedpageXandY{#1}0{\numexpr\@@ppnx-1\relax}0\arrangedpageA
  \else\ifnum\arrangedpageN>\numexpr\@@ppnx+1\relax
    \handlearrangedpageXandY{#1}0{\numexpr\arrangedpageN-\@@ppnx-2\relax}0\arrangedpageA
  \else
    \handlearrangedpageXandY{#1}0{\numexpr\arrangedpageN-2\relax}0\arrangedpageB
  \fi\fi
  \ifnum\arrangedpageN=\arrangedpageT
    \poparrangedpages
  \fi}

\protect
\setuppapersize[DL][A3,landscape]
\setuppaper    [nx=3]
\setuparranging[LEAFLET]
\setuplayout   [location=middle,marking=on]

\setupbackgrounds[page][frame=on]

\starttext

\dorecurse{6}
 {\startstandardmakeup[align=middle]
  \ssd Page \recurselevel
  \stopstandardmakeup}

\stoptext

Feature Requests

  • grid=yes option for \definelayout,
  • temporary user variable for privat macros (see above),
  • macro \defineuvervariable{...} to define namespaces for third party modules.

Links