xtable с математическими символами latex в таблице

#latex #knitr #xtable #math-mode

#Латекс #knitr #xtable #математический режим

Вопрос:

Я пытаюсь написать эту таблицу с флажками, используя xtable пакет. Казалось бы, флажки, которые я выбрал, — это то, что выдает ошибку. Я просто в недоумении, как это исправить.

 library(xtable)

## I want to create a table with the names of some people in two columns
nStu = 10

## Create fake names
names = character(nStu)
for(i in 1:nStu){
  names[i] = paste(LETTERS[i],rep(letters[i],5),sep='',collapse='')
}
## put check boxes behind each of the names
squares = rep('$ \square $',nStu)

## Build the table
rosterTab = data.frame('Name'=names,'Mostly'=squares,'Sometimes'=squares, stringsAsFactors = FALSE)

## Now chop it in half and paste the halves together.  (Yes, if nStu is odd, this will have to be fixed)
lTab = nStu%/%2
aTab = rosterTab[1:lTab, ]
bTab = rosterTab[(lTab 1):nStu, ]
outTab = cbind(aTab,bTab)

## Everything before this point runs fine.
outTab.tab = xtable(outTab,label=FALSE)
align(outTab.tab) = 'llcc||lcc'
print(outTab.tab, include.rownames=FALSE, sanitize.text.function = function(x){x})
  

Сообщение об ошибке, которое я получаю, является:

Ошибка в as.string(y) : не удается принудительно привести аргумент к строке

Эта ошибка исчезнет, если я использую:

 squares = rep('aaa',nStu)
  

В идеале я хочу получить имена из файла csv (что я могу сделать довольно легко) и буду использовать knitr для записи этого в документ LaTeX. (Я хочу сделать это для множества входных файлов, поэтому автоматизация этой задачи кажется мне полезной.)

Вот несколько других идей, которые я рассмотрел:

  1. Решение только для $ LaTeX $. Обратите внимание, что есть еще одна трудность (кроме того, что квадратов нет во входном файле), и это то, что мне нужно будет выполнить некоторые текстовые манипуляции со строками во входном файле.
  2. Замена square символа каким-либо другим объектом, который выглядит как флажок, который (через knitr) Я могу отправить в $ LaTeX $.