我是乳膠新手,我試圖在我的文件中包含 TI84 計算器的輸出。
它應該看起來像這樣:
以下是我能做的。
我的輸出的高度和寬度自行安排,我想要固定的高度/寬度,並在框內包含自訂填充和文字。任何幫助將不勝感激。
我的程式碼是
{\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}
}
答案1
原始構造\vbox to...
就是您問題的答案。您可以嘗試以下程式碼:
\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|
}
編輯:我的巨集的第二個版本\ticalc
實作了自動換行。盒子的寬度必須由 setbox 設定。請參閱假定有 16 個字元的行\setbox0
。長度超過此尺寸的文字將被換行。每對字元之間可以進行換行。
可選的\result
後跟文字可以包含在巨集的參數中\ticalc
。此類文字列印在右對齊的下一行。
\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}
答案2
以下解決方案借用了一些程式碼很好的答案白鷺鷥:
\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
這定義了一個terminal
自動將文字包裹在框框中的新環境。
盒子是透過minipage
內部tcolorbox
環境製成的。
這是完整的程式碼
\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}
這是結果:
答案3
karlkoeller 答案的變體,其中盒子的寬度、高度、填充和對齊方式是可自訂的。對齊是指盒子相對於周圍材料的垂直對齊。
該設定期望在框中使用等寬字體;我使用“DejaVu Sans Mono”,因為我沒有“Texas Instruments TI-84 系列”字體;只需更改該行的字體即可\newfontfamily
。
預設值:
- 高度:8(行)
- 寬度:16(字元)
- 填充:1pt
- 對齊:c
align
的可能值為c
、t
和b
。
您可以使用可選參數中的鍵值介面設定值,如下terminal
所示。
\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}
相反,\fbox
我們可以使用tcolorbox
.