如何在我的 LaTeX 项目中创建一个小型的对象“数据库”,并在不同的地方使用它们属性的不同子集

如何在我的 LaTeX 项目中创建一个小型的对象“数据库”,并在不同的地方使用它们属性的不同子集

假设您想要在一个中心位置维护一组对象,并在 LaTeX 文档的各个位置以不同的方式(“视图”)呈现它们,类似于词汇表,但更通用。

例如,假设您要建立一个小型“数据库”,其中包含员工的名字、姓氏、身份标识、出生日期等。然后,您要在文档的简介部分创建一个员工列表,其中只打印名字,以逗号分隔。然而,在附录中,您要打印一个显示所有属性(作为列)和所有员工(作为行)的表格。

此外,您希望能够从该数据库中以不同的格式“挑选”单个条目,类似于 \Glspl{employee1}、\gls{employee1}、...

当然,一种方法可以是使用脚本和 sqlite 的组合来生成 latex 代码作为预处理步骤。

但是,最直接的 LaTeXish 方法是什么? 有什么软件包可以提供帮助吗?

答案1

正如评论中所说,为了处理大量数据,有更好的编程语言可以与 LaTeX 一起使用。其中一种替代方案是knitr(R 包),它允许混合使用 R 和 LaTeX 代码。

要测试下面的示例,您应该将其保存为.Rnw扩展名保存它,然后可以使用 Rstudio 进行编译,或者查看如何从命令行构建 Knitr 文档。如果您的计算机上没有 R,您也可以在 Overleaf 中测试此文件,但使用扩展名.Rtex

妇女权利委员会:


姆韦


\documentclass{article}
% preample only to beautify the result, nothing is essential 
\usepackage{parskip}
\usepackage{booktabs}
\usepackage[colorlinks]{hyperref}
\renewcommand\belowcaptionskip{1ex}

\begin{document}

\section*{The raw data for this example}

 
<<employees,echo=FALSE>>=
# construct a data frame (you can also import it csv, excel, csv, ...)
  df <- data.frame(
    Name    = c("Bob", "Sam",  "Jim"),
    Surname = c("Wood","Smith","Carter"),
    Rate = c(94,     4,     3), # Field experience (%)
    date = as.Date(c('1990-10-02','1981-3-24','1987-6-14')),
    Position= c("director","subdirector","secretary"))
# Nicknames as ID   
rownames(df) <- c("nba", "spy",  "tv") 

today <- as.Date(Sys.Date())

# Show raw data
    df
@

\section*{About our fake employees}

The team will be our employees 
\Sexpr{combine_words(paste(df$Name,df$Surname))}.

Although the mean rate experience of the team is only 
\Sexpr{round(mean(df$Rate),1)}\;\%, but the \Sexpr{df[1,5]} of the project will be \Sexpr{df[1,1]}. Mr. \Sexpr{df["nba",2]} 
is highly cualified for this specific work 
(\Sexpr{df["nba","Rate"]}\;\%). 
He was born in 
\Sexpr{format(df["nba","date"], format = "%Y")}, 
so roughly he has now 
\Sexpr{format(difftime(today, df["nba","date"], 
    unit="days"), big.mark = '\\\\;')} 
days of living experience. 

\section*{Full team data (to show)}

See in table \ref{Team}: 

<<team table,echo=F, results="asis">>=
library(xtable)
    
df$date <-  as.character(df$date)     
print(xtable(df[,c(1,2,5,4,3)], 
             caption="Full team",
             label="Team",
             align="llllcr",
             digits=0),
      booktabs=T,
      include.rownames=F,
      caption.placement="top"
      )

@

\end{document}

相关内容