Haga preguntas en línea que luego se imprimen nuevamente como tarjetas didácticas.

Haga preguntas en línea que luego se imprimen nuevamente como tarjetas didácticas.

Estoy trabajando en un folleto en la clase de documentos del libro tufte, pero quería hacer tarjetas didácticas en línea que se impriman dentro del texto en un formato (anverso y reverso, uno al lado del otro para mostrar lo que se espera que aprenda) e impreso como Tarjetas didácticas adecuadas en el apéndice. Encontré la flacardsclase de documento que parecía perfecta cuando se combinaba con scontents.

El problema es que no puedo usar dos clases de documentos en un solo documento y no puedo compilar los dos documentos de forma independiente porque el contenido está definido con scontents. ¿Alguien puede ayudarme a encontrar un mejor enfoque?

Entonces, tengo mi main.tex.

\documentclass[a4paper]{article}

\usepackage[store-env=flashcards,store-cmd=flashcards]{scontents}
\setupsc{print-env=false}
\usepackage{forloop}

\newcommand{\flash}[2]{%
\Scontents{#1}\Scontents{#2}%
Side 1: #1

Side 2: #2
}

\begin{document}

\flash{A}{B}
\flash{C}{D}

\clearpage
\include{flashcards}

\end{document}

y luego flashcards.tex

\documentclass[frontgrid]{flacards}

\begin{document}

\newcounter{ct}
\newcounter{ct2}
\newcounter{maxct}
\setcounter{maxct}{\countsc{flashcards}}
\forloop[2]{ct}{1}{\value{ct} < \value{maxct}}%
{%
  \setcounter{ct2}{\value{ct}}
  \addtocounter{ct2}{1}
  \card{\getstored[\value{ct}]{flashcards}}{\getstored[\value{ct2}]{flashcards}}
}

\end{document}

Respuesta1

Pude resolverlo convirtiendo la clase flacards en un paquete y modificando un poco las geometrías. Entonces esta solución solo funciona para papel A4. El resultado es que puedo agregar \flash{A}{B}a mi documento y obtener

Tarjetas didácticas tal como aparecen en línea

en línea y

Tarjetas didácticas tal como aparecen en el apéndice

en el Apéndice.

En el preámbulo, añadir

\documentclass[notoc,nols,a4paper]{tufte-book}
...
\usepackage[store-env=flashcards,store-cmd=flashcards]{scontents}
\setupsc{print-env=false}
\usepackage{forloop}

\newcommand{\flash}[2]{%
\Scontents{#1}\Scontents{#2}%
\noindent%
\begin{minipage}{80mm}
  \begin{flashfront}
    #1
  \end{flashfront}
\end{minipage}% This must go next to `\end{minipage}`
\begin{minipage}{80mm}
  \begin{flashback}
    #2
  \end{flashback}
\end{minipage}
}

\usepackage{tikz}
\usepackage[framemethod=TikZ]{mdframed}

\newenvironment{flashfront}[1][]{%
\ifstrempty{#1}%
{\mdfsetup{%
frametitle={%
\tikz[baseline=(current bounding box.east),outer sep=0pt]
\node[anchor=east,rectangle,fill=blue!20]
{\strut Front};}}
}%
{\mdfsetup{%
frametitle={%
\tikz[baseline=(current bounding box.east),outer sep=0pt]
\node[anchor=east,rectangle,fill=blue!20]
{\strut Front:~#1};}}%
}%
\mdfsetup{innertopmargin=10pt,linecolor=blue!20,%
linewidth=2pt,topline=true,%
frametitleaboveskip=\dimexpr-\ht\strutbox\relax
}
\begin{mdframed}[]\relax%
\sloppy
}{\end{mdframed}}

\newenvironment{flashback}[1][]{%
\ifstrempty{#1}%
{\mdfsetup{%
frametitle={%
\tikz[baseline=(current bounding box.east),outer sep=0pt]
\node[anchor=east,rectangle,fill=red!20]
{\strut Back};}}
}%
{\mdfsetup{%
frametitle={%
\tikz[baseline=(current bounding box.east),outer sep=0pt]
\node[anchor=east,rectangle,fill=red!20]
{\strut Back:~#1};}}%
}%
\mdfsetup{innertopmargin=10pt,linecolor=red!20,%
linewidth=2pt,topline=true,%
frametitleaboveskip=\dimexpr-\ht\strutbox\relax
}
\begin{mdframed}[]\relax%
\sloppy
}{\end{mdframed}}

Luego, donde queremos que aparezcan las flashcards.

\chapter*{Flashcards}
\newcounter{ct}
\newcounter{ct2}
\newcounter{maxct}
\setcounter{maxct}{\countsc{flashcards}}
\forloop[2]{ct}{1}{\value{ct} < \value{maxct}}%
{%
  \setcounter{ct2}{\value{ct}}
  \addtocounter{ct2}{1}
  \card{\getstored[\value{ct}]{flashcards}}{\getstored[\value{ct2}]{flashcards}}
}
\newgeometry{textwidth=20cm,noheadfoot, margin=1cm, outer=1cm, inner=1cm}
\cleardoublepage
\pagestyle{empty}
\box\front\newpage\box\back
\restoregeometry

Crea un archivo llamadomyflash.sty


\def\fc@frontgrid{true}
\def\fc@backgrid{true}
\def\textwidthh{190mm}

%TODO: margin managment
%\RequirePackage[noheadfoot, margin=1cm, outer=1cm, inner=1cm]{geometry}

% TODO: replace
\newcommand*{\fc@strippt}[1]{%
    \strip@pt#1}%

\newcounter{cardno}\setcounter{cardno}{0}
\newcount\cardperpage
\newdimen\cardwidth
\newdimen\cardheight

\newcommand{\fc@boxcontent}[2]{%
\parindent=0pt%
{\cardbox{#1}{#2}}%
}

\newcommand{\cardbox}[2]{%
\vbox{%
\vskip\fboxsep%
\hbox{%
\hskip\fboxsep%
{\advance\cardheight by -2\fboxsep
\vbox to \cardheight {%
\hsize=\cardwidth\advance\hsize by -2\fboxsep%
{\cardinnerbox{#1}{#2}}}%
}\hskip\fboxsep}}%
}

\newcommand{\cardinnerbox}[2]{%
 \sloppy%
 %\smash%
 {%
 \makebox[0pt][l]{\parbox[t]{\cardwidth}{\raggedright\csname #1lhead\endcsname}}\hfill%
 \makebox[0pt][c]{\parbox[t]{\cardwidth}{\centering\csname #1chead\endcsname}}\hfill%
 \makebox[0pt][r]{\parbox[t]{\cardwidth}{\raggedleft\csname #1rhead\endcsname}}%
 }%
 \vfill%
 {\cardtext{#1}{#2}}
 \vfill%
 %\smash%
 {%
 \makebox[0pt][l]{\parbox[b]{\cardwidth}{\raggedright\csname #1lfoot\endcsname}}\hfill%
 \makebox[0pt][c]{\parbox[b]{\cardwidth}{\centering\csname #1cfoot\endcsname}}\hfill%
 \makebox[0pt][r]{\parbox[b]{\cardwidth}{\raggedleft\csname #1rfoot\endcsname}}%
 }%
}

\newcommand{\cardtext}[2]{%
\centering{\csname cardtextstyle#1\endcsname #2\\}%
}

\newcommand{\cardtextstylef}{%
\itshape}

\newcommand{\cardtextstyleb}{%
\itshape}

%% front
\newsavebox\front
\setbox\front=\vbox{}
% layout
\newcommand{\flhead}{}\newcommand{\fchead}{}\newcommand{\frhead}{}
\newcommand{\flfoot}{}\newcommand{\fcfoot}{}\newcommand{\frfoot}{}

%% back
\newsavebox\back
\setbox\back=\vbox{}
% layout 
\newcommand{\blhead}{}\newcommand{\bchead}{}\newcommand{\brhead}{}
\newcommand{\blfoot}{}\newcommand{\bcfoot}{}\newcommand{\brfoot}{}

\renewcommand{\frfoot}{\footnotesize \thecardno}
\renewcommand{\brfoot}{\footnotesize \thecardno}

\newcommand{\pagesetup}[2]{%
\def\rowsperpage{#2}\relax%
\def\colsperpage{#1}\relax%
\cardwidth=\textwidthh\relax%
\cardheight=\textheight\relax%
\divide\cardwidth by \colsperpage%
\divide\cardheight by \rowsperpage%
\cardperpage=\colsperpage\relax%
\multiply\cardperpage by \rowsperpage\relax%
}

\newcommand{\card}[2]{%
\@tempcnta=-\thecardno\divide\@tempcnta by \cardperpage\multiply\@tempcnta by \cardperpage\advance\@tempcnta by \thecardno\relax%
\@tempcntb=\@tempcnta%
\count@=\@tempcnta\relax%
\divide\count@ by \colsperpage\relax%
\@tempcnta=\count@\relax%
\multiply\count@ by \colsperpage\relax%
\advance\@tempcntb by -\count@\relax%
\stepcounter{cardno}%
\unitlength=1pt%
\advance\@tempcnta by 1\relax%
\@tempdima=\cardheight\relax%
\@tempdimb=\cardwidth\relax%
\advance\@tempdima by \fboxrule\relax%
\advance\@tempdimb by \fboxrule\relax%
\multiply\@tempdima by \@tempcnta\relax%
\multiply\@tempdimb by \@tempcntb\relax%
\advance\@tempdima by -\baselineskip\relax%
\setbox\front=\vbox{\unvbox\front%
\noindent\begin{picture}(0,0)%
\put(\fc@strippt\@tempdimb,-\fc@strippt\@tempdima){%
\ifdefined\fc@frontgrid\framebox(\fc@strippt\cardwidth,\fc@strippt\cardheight)[t]{\fc@boxcontent{f}{#1}}
\else\makebox(\fc@strippt\cardwidth,\fc@strippt\cardheight)[t]{\fc@boxcontent{f}{#1}}%
\fi
}%
\end{picture}%
}%
\setbox\back=\vbox{\unvbox\back%
\noindent\begin{picture}(0,0)%
\multiply\@tempdimb by -1\relax%
\advance\@tempdimb by \textwidthh\relax%
\advance\@tempdimb by -\cardwidth\relax%
\put(\fc@strippt\@tempdimb,-\fc@strippt\@tempdima){%
\ifdefined\fc@backgrid\framebox(\fc@strippt\cardwidth,\fc@strippt\cardheight)[t]{\fc@boxcontent{b}{#2}}%
\else\makebox(\fc@strippt\cardwidth,\fc@strippt\cardheight)[t]{\fc@boxcontent{b}{#2}}%
\fi%
}%
\end{picture}%
}%
\count@=\thecardno\divide\count@ by \cardperpage\multiply\count@ by \cardperpage\advance\count@ by -\thecardno\relax%
\ifnum \count@=0\relax%
\noindent\box\front\newpage\box\back\newpage%
\else\fi
}

información relacionada