Soy nuevo en látex, estoy intentando incluir la salida de la calculadora TI84 en mi documento.
Se supone que debería verse así:
Lo siguiente es lo que puedo hacer.
La altura y el ancho de mi salida se organizan solos, quiero una altura/ancho fijo, con relleno personalizado y texto ajustado dentro del cuadro. Cualquier ayuda será apreciada.
mi codigo es
{\scriptsize
\setmainfont{Texas Instruments TI-84 series}
\tabulinesep=0.05 in
\begin{tabu} to 1 in {|c |}
\hline
normalcdf(-1.5,2)\\
\hfill .9104427093
\\\hline
\end{tabu}
}
Respuesta1
La \vbox to...
construcción primitiva es la respuesta a tu pregunta. Puedes probar el siguiente código:
\def\tifont{\setmainfont{Texas Instruments TI-84 series}}
\setbox0=\hbox{\tifont 12345678901234567\kern2pt}\edef\tiwidth{\wd0}
\def\ticalc#1{\hbox{\vrule\vbox to2cm{\hrule\kern1pt
\def\l##1|{\hbox to\tiwidth{\kern1pt##1\kern1pt\hss}}\tifont #1\vss\hrule}\vrule}}
\ticalc{
\l normalcdf(-1.5,2)|
\l\hfill .9104427093|
}
Editar:Mi segunda versión de la macro \ticalc
implementa el ajuste automático. El ancho del cuadro debe establecerse mediante setbox. Vea la línea \setbox0
donde se suponen 16 caracteres. El texto con una longitud mayor que esta dimensión se ajusta. El ajuste es posible entre cada par de caracteres.
El opcional \result
seguido de texto se puede incluir en el parámetro de la \ticalc
macro. Dicho texto se imprime en la siguiente línea alineada a la derecha.
\def\titext{\hsize=\tiwidth \leftskip=1pt\rightskip=1pt plus1fil \tifont \noindent \titextA}
\def\titextA{\futurelet\next\titextB}
\def\titextB{\ifx\next\result \else \null\next \penalty0 \expandafter\titextC \fi}
\def\titextC{\afterassignment\titextA \let\next= }
\newfontfamily\tifont{Texas Instruments TI-84 series}
\setbox0=\hbox{\tifont 1234567890123456\kern2pt}\edef\tiwidth{\wd0}
\def\ticalc#1{\hbox{\vrule\vbox to2cm{\hrule\kern1pt\titext#1\result\relax\vss\hrule}\vrule}}
\def\result#1\relax{\par\let\result=\relax \hbox to\tiwidth{\hss#1\kern1pt}}
\ticalc{normalcdf(-1.5,2)\result .9104427093}
\ticalc{abcdefghijklmnopqrsyuyu}
Respuesta2
La siguiente solución toma prestado algo de código de esto.gran respuestade egreg:
\ExplSyntaxOn
\NewEnviron{terminal}
{
\raggedright\varun_zerohyphen:V \BODY
}
\seq_new:N \l_varun_body_seq
\cs_new_protected:Npn \varun_zerohyphen:n #1
{
\seq_set_split:Nnn \l_varun_body_seq { ~ } { #1 }
\seq_map_inline:Nn \l_varun_body_seq { \varun_printword:n { ##1 } }
}
\cs_generate_variant:Nn \varun_zerohyphen:n { V}
\cs_new_protected:Npn \varun_printword:n #1
{
\tl_map_inline:nn { #1 } { ##1 \penalty0 \scan_stop: }
\c_space_tl
}
\ExplSyntaxOff
Esto define un nuevo entorno terminal
que envuelve automáticamente el texto dentro del cuadro.
La caja se realiza a través de un ambiente minipage
interior tcolorbox
.
Este es el código completo
\documentclass{article}
\usepackage{tcolorbox}
\usepackage{amssymb}
\usepackage{fontspec}
\newfontfamily\TIfont{Texas Instruments TI-84 series}
% Start ----------- Code from https://tex.stackexchange.com/a/153692
\usepackage{xparse,environ}
\ExplSyntaxOn
\NewEnviron{terminal}
{
\raggedright\varun_zerohyphen:V \BODY
}
\seq_new:N \l_varun_body_seq
\cs_new_protected:Npn \varun_zerohyphen:n #1
{
\seq_set_split:Nnn \l_varun_body_seq { ~ } { #1 }
\seq_map_inline:Nn \l_varun_body_seq { \varun_printword:n { ##1 } }
}
\cs_generate_variant:Nn \varun_zerohyphen:n { V}
\cs_new_protected:Npn \varun_printword:n #1
{
\tl_map_inline:nn { #1 } { ##1 \penalty0 \scan_stop: }
\c_space_tl
}
\ExplSyntaxOff
% End ----------- Code from https://tex.stackexchange.com/a/153692
\begin{document}
{\scriptsize
\TIfont
\begin{tcolorbox}[%
arc=0pt,
outer arc=0pt,
boxsep=1pt,
top=0mm,
bottom=10mm,
left=0mm,
right=0mm,
boxrule=0.3pt,
colback=white,
colframe=black,
hbox
]
\begin{minipage}{1.14in}
\begin{terminal}
normalcdf(-1.5,2)\par
\hfill .9104427093\par
$\blacksquare$\par
\end{terminal}
\end{minipage}
\end{tcolorbox}
}
\end{document}
Y este es el resultado:
Respuesta3
Una variante de la respuesta de Karlkoeller, donde el ancho, alto, relleno y alineación de la caja son personalizables. La alineación se refiere a la alineación vertical de la caja con respecto al material circundante.
La configuración espera que se utilice una fuente monoespaciada en el cuadro; Utilicé “DejaVu Sans Mono” porque no tengo la fuente “Texas Instruments TI-84 series”; simplemente cambie la fuente en la \newfontfamily
línea.
Valores predeterminados:
- altura: 8 (líneas)
- ancho: 16 (caracteres)
- relleno: 1pt
- alinear: c
Los valores posibles para align
son c
y t
.b
Puede establecer los valores con una interfaz clave-valor en el argumento opcional como terminal
se muestra.
\documentclass{article}
\usepackage{amssymb}
\usepackage{xparse,environ}
\usepackage{fontspec}
\newfontfamily\TI{DejaVu Sans Mono} % or whatever
\ExplSyntaxOn
\NewEnviron{terminal}[1][]
{
\scriptsize\TI
\keys_set:nn { varun/display } { width=16 , #1 }
\fbox
{
\parbox
[\l_varun_align_tl] % outer alignment
[\l_varun_height_int \baselineskip] % height
[t] % inner alignment
{\l_varun_width_dim} % width
{
\raggedright % don't try filling up lines
\varun_zerohyphen:V \BODY
}
}
}
\seq_new:N \l_varun_body_seq
\dim_new:N \l_varun_width_dim
\cs_new_protected:Npn \varun_zerohyphen:n #1
{
\seq_set_split:Nnn \l_varun_body_seq { ~ } { #1 }
\seq_map_inline:Nn \l_varun_body_seq { \varun_printword:n { ##1 } }
}
\cs_generate_variant:Nn \varun_zerohyphen:n { V }
\cs_new_protected:Npn \varun_printword:n #1
{
\tl_map_inline:nn { #1 } { ##1 \penalty\c_zero }
\c_space_tl
}
\cs_new_protected:Npn \__varun_set_width:n #1
{
\hbox_set:Nn \l_tmpa_box { \prg_replicate:nn { #1 } { A } }
\dim_set_eq:NN \l_varun_width_dim \box_wd:N \l_tmpa_box
}
\keys_define:nn { varun/display }
{
width .code:n = \__varun_set_width:n { #1 },
padding .code:n = \dim_set:Nn \fboxsep { #1 },
padding .initial:n = 1pt,
height .int_set:N = \l_varun_height_int,
height .initial:n = 8,
align .tl_set:N = \l_varun_align_tl,
align .initial:n = c,
}
\ExplSyntaxOff
\begin{document}
\begin{terminal}
normalcdf(-1.5,2)\\
\hfill .9104427093\\
1\\
2\\
3\\
4\\
▪
\end{terminal}\qquad
\begin{terminal}[width=20]
normalcdf(-1.5,2)\\
\hfill .9104427093\\
▪
\end{terminal}
\bigskip
\begin{terminal}[align=t]
normalcdf(-1.5,2)\\
\hfill .9104427093\\
▪
\end{terminal}\qquad
\begin{terminal}[align=t,height=4]
normalcdf(-1.5,2)\\
\hfill .9104427093\\
▪
\end{terminal}\qquad
\begin{terminal}[align=t,height=4,padding=6pt]
normalcdf(-1.5,2)\\
\hfill .9104427093\\
▪
\end{terminal}
\end{document}
En lugar de \fbox
uno, se podrían utilizar los métodos más sofisticados proporcionados por tcolorbox
.